{"id":230967,"date":"2022-12-06T18:39:00","date_gmt":"2022-12-06T15:39:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230967"},"modified":"2022-12-07T12:18:29","modified_gmt":"2022-12-07T09:18:29","slug":"installazione-di-xdebug-parte-1-il-modulo-xdebug","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/installazione-di-xdebug-parte-1-il-modulo-xdebug\/","title":{"rendered":"Installazione di Xdebug, Parte 1: Il modulo Xdebug"},"content":{"rendered":"\n<p>Ormai, abbiamo coperto molte cose relative al lavoro con WordPress e al debug. E questo \u00e8 particolarmente vero per quanto riguarda il lavoro con strumenti e plug-in disponibili all&#8217;interno di WordPress. Se ti stai appena unendo a questa serie particolare, assicurati di essere aggiornato con i seguenti post:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/lettura-e-comprensione-dei-log-degli-errori-di-wordpress-parte-1\/\" title=\"Lettura e comprensione dei log degli errori di WordPress, parte 1\">Lettura e comprensione dei log degli errori di WordPress, parte 1<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/lettura-e-comprensione-dei-log-degli-errori-di-wordpress-parte-2\/\" title=\"Lettura e comprensione dei log degli errori di WordPress, parte 2\">Lettura e comprensione dei log degli errori di WordPress, parte 2<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/tommcfarlin.com\/debugging-within-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Debug di base all&#8217;interno di WordPress<\/a><\/strong><\/li>\n<\/ul>\n<p>Nel post precedente, ricorda che ho detto quanto segue:<\/p>\n<blockquote>\n<p>Ma se stai cercando di entrare nel mondo del debug pratico e professionale dall&#8217;interno del tuo IDE, allora \u00e8 importante capire cosa, come e perch\u00e9.<\/p>\n<\/blockquote>\n<p>E siamo finalmente pronti a vedere cosa richiede. Per iniziare, tuttavia, significa che dobbiamo capire alcune cose su <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong>, la terminologia e avere un IDE coerente per tutti coloro che leggono questa particolare serie.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162717-61e743dbd5b19.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162717-61e743dbd5b19.png\" alt=\"Installazione di Xdebug, Parte 1: Il modulo Xdebug\"><\/a><\/p>\n<p>Quindi questo sar\u00e0 suddiviso in due parti.<\/p>\n<ul>\n<li>Innanzitutto, esamineremo la terminologia richiesta per il debug e ci assicureremo di avere una configurazione IDE adeguata nel nostro ambiente di sviluppo,<\/li>\n<li>Successivamente, esamineremo come assicurarci di aver installato correttamente Xdebug e quindi collegarlo al nostro ambiente di sviluppo in modo da poterlo mettere in funzione.<\/li>\n<\/ul>\n<p>Se hai letto una variet\u00e0 di contenuti in questo blog negli ultimi anni, alcuni di questi potrebbero sembrare familiari. Se no, niente di grave. Ricorda che l&#8217;obiettivo \u00e8 assicurarci che siamo tutti sullo stesso livello mentre procediamo con il lavoro sopra menzionato e per tutto il resto della serie.<\/p>\n<p>Detto questo, iniziamo.<\/p>\n<h2>Installazione di Xdebug, parte 1<\/h2>\n<p>Come accennato in precedenza, questo insieme di post servir\u00e0 a uno dei due scopi che possono essere entrambi descritti succintamente (il secondo dei quali sar\u00e0 descritto nel prossimo post):<\/p>\n<ol>\n<li>Terminologia di debug<\/li>\n<li>Installazione di un IDE<\/li>\n<\/ol>\n<p>Anche se molti che stanno leggendo questo avranno gi\u00e0 familiarit\u00e0 con parte della terminologia (soprattutto se hai gi\u00e0 utilizzato strumenti lato client o anche strumenti lato server) e hai gi\u00e0 un editor di scelta, \u00e8 importante assicurarsi di essere almeno lavorando con una base coerente.<\/p>\n<p>Se sei sicuro delle tue capacit\u00e0 nei due punti sopra menzionati, \u00e8 probabile che il prossimo post sar\u00e0 pi\u00f9 interessante per te. Se, d&#8217;altra parte, questo sta entrando in un nuovo territorio per te, dovrebbe gettare le basi per tutto ci\u00f2 di cui hai bisogno per assicurarti di eseguire correttamente il debug dei progetti in WordPress.<\/p>\n<p>Inoltre, si assicurer\u00e0 di disporre di un insieme coerente di strumenti con cui lavorare in modo da poter continuare a portare avanti un insieme standard di strumenti per creare l&#8217;ambiente di sviluppo pi\u00f9 produttivo possibile.<\/p>\n<h3>1 Terminologia di debug<\/h3>\n<p>A seconda del tuo background, potresti affermare che ci sono da cinque a sette termini ciascuno dei quali \u00e8 correlato al debug. Ho delineato poi prima in altri post su questo sito. Ogni volta, tuttavia, l&#8217;ho fatto con un approccio un po&#8217; diverso al contenuto.<\/p>\n<p>In questo post, miro a cercare di renderlo il pi\u00f9 accurato e preciso possibile in modo che fornisca un riferimento coerente che saremo in grado di utilizzare nei post (e nel lavoro) a venire. Allo stato attuale, ecco i termini che penso che tutti dovrebbero conoscere in relazione al proprio debugger.<\/p>\n<ol>\n<li><strong>Punti di rottura<\/strong>. Questi possono essere considerati i blocchi fondamentali del debug. In poche parole, sono punti nel codice di cui vuoi sospendere l&#8217;esecuzione in modo da poter esaminare cosa sta succedendo nel codice. Forse questo ha a che fare con le variabili; forse ha a che fare con le funzioni, forse ha a che fare con qualcos&#8217;altro. Indipendentemente da ci\u00f2, questo \u00e8 importante perch\u00e9 stai dicendo al programma &quot;ehi, voglio interrompere l&#8217;esecuzione del programma proprio qui su questa riga in modo da poter indagare sullo stato del programma&quot;.<\/li>\n<li><strong>Orologi<\/strong>. Si tratta di chiamate di funzione, variabili o altri punti del codice che possono essere impostati in modo tale da poter vedere letteralmente i valori cambiare durante l&#8217;esecuzione. Se stiamo parlando di funzioni, allora potremmo riferirci ai valori degli argomenti mentre sono impostati e manipolati all&#8217;interno di una funzione. Se parliamo di variabili, parliamo di variabili; quindi stiamo parlando dei valori che mantengono in un dato momento durante l&#8217;esecuzione del programma. Questo pu\u00f2 essere quando impostiamo un punto di interruzione specifico, oppure pu\u00f2 essere ogni volta che passiamo attraverso il codice e teniamo d&#8217;occhio lo stato della variabile durante l&#8217;esecuzione del programma.<\/li>\n<li><strong>Inizia<\/strong>. Questa azione dice semplicemente al debugger di iniziare a monitorare il server web. In sostanza, tiene d&#8217;occhio tutto ci\u00f2 che sta accadendo all&#8217;interno del programma e, se vengono impostati punti di interruzione, \u00e8 pronto a interrompere l&#8217;esecuzione e permetterci di dare un&#8217;occhiata a ci\u00f2 che sta accadendo con lo stato del programma. Puoi tecnicamente avviare una sessione di debug e non fare nulla. Non \u00e8 esattamente produttivo, ma \u00e8 possibile.<\/li>\n<li><strong>Entra<\/strong>. Si supponga per un momento di avere un punto di interruzione impostato appena sopra una chiamata di funzione o su una chiamata di funzione. Questo ci consente di entrare nella funzione per monitorare il valore di ogni argomento, come vengono manipolati all&#8217;interno della funzione, cosa restituisce la funzione (se non altro) e tutto ci\u00f2 che accade all&#8217;interno della funzione.<\/li>\n<li><strong>Passo oltre<\/strong>. D&#8217;altra parte, supponiamo che stai camminando attraverso la funzione e non sei sicuro di voler tuffarti nella funzione. Forse sei interessato solo ai valori che la funzione restituisce o allo stato del programma dopo che la funzione \u00e8 stata eseguita, ma non sei interessato a cosa \u00e8 successo all&#8217;interno della funzione. In sostanza, lo tratti come una scatola nera. Ecco cosa significa scavalcare una funzione. Cio\u00e8, lasci eseguire la funzione senza entrarci per vederla funzionare.<\/li>\n<li><strong>Esci<\/strong>. Questo particolare aspetto del debug \u00e8 utile ogni volta che ti trovi in \u200b\u200buna funzione e sei pronto per tornare alla linea di esecuzione principale perch\u00e9 hai visto tutto ci\u00f2 che devi vedere. Forse hai visto cambiare i valori di una variabile, forse hai visto un algoritmo fare abbastanza lavoro per sapere che ha fatto quello che vuoi. In ogni caso, questo ti consentir\u00e0 di uscire dalla funzione, opportunamente denominata, e quindi di passare al file<\/li>\n<li><strong>Fermati<\/strong>. Proprio come start dice al debugger di <strong>iniziare<\/strong> ad ascoltare il server, prestare attenzione ai punti di interruzione e visualizzare informazioni sullo stato di avanzamento dell&#8217;applicazione, stop fa esattamente l&#8217;opposto. Dice al debugger che abbiamo finito di ascoltare, guardare e prestare attenzione allo stato del programma. Questo non significa che il programma si fermi, solo il debugger. Quindi, se hai finito di prestare attenzione a tutte le informazioni fornite dal debugger, \u00e8 probabile che tu sia in grado di interrompere il debugger.<\/li>\n<\/ol>\n<p>Un&#8217;ultima nota che vorrei fare \u00e8 che PHP \u00e8 unico in quanto offre una variet\u00e0 di variabili accessibili pubblicamente come <strong><a href=\"https:\/\/secure.php.net\/manual\/en\/reserved.variables.get.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">$_GET<\/a> ,<\/strong> <a href=\"https:\/\/secure.php.net\/manual\/en\/reserved.variables.post.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">$_POST<\/a>, <a href=\"https:\/\/secure.php.net\/manual\/en\/reserved.variables.request.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">$_REQUEST<\/a> e cos\u00ec via. Queste sono anche variabili a nostra disposizione che possiamo guardare. Non \u00e8 solo limitato a ci\u00f2 che abbiamo scritto nel nostro codice.<\/p>\n<p>Ci\u00f2 \u00e8 particolarmente utile quando esaminiamo i dati tra i ricaricamenti di pagine, le richieste Ajax (come durante le azioni GET e POST) e cos\u00ec via.<\/p>\n<h3>2 Installazione di Xdebug<\/h3>\n<p>Sebbene sia probabilmente evidente dai post precedenti di questa serie, utilizzer\u00f2 <strong><a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Visual Studio Code<\/a><\/strong> come IDE preferito. Se non ne hai uno, questo \u00e8 uno che consiglio. Se, tuttavia, hai un IDE con cui ti senti a tuo agio nell&#8217;usare, questo \u00e8 uno che consiglio.<\/p>\n<ul>\n<li>Il codice \u00e8 sempre in fase di sviluppo,<\/li>\n<li>ha un&#8217;economia attiva di estensioni,<\/li>\n<li>funziona bene con una variet\u00e0 di linguaggi, strumenti e cos\u00ec via,<\/li>\n<li>\u00e8 leggero e funziona bene con le varie cose che potremmo essere utilizzate nello sviluppo di WordPress (come PHP, HTML e JavaScript).<\/li>\n<\/ul>\n<p>Inoltre, <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/visual-studio-code\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Code<\/a><\/strong> ha anche un solido supporto per Xdebug. Per assicurarci che il debugger sia installato correttamente, tuttavia, dobbiamo assicurarci di avere l&#8217;estensione installata con la nostra installazione di PHP, che sia disponibile nel nostro sistema e che possa essere eseguita all&#8217;interno del nostro IDE. Cercheremo di farlo, ma prima dobbiamo assicurarci che Xdebug sia installato correttamente.<\/p>\n<h4>Installazione di Xdebug<\/h4>\n<p>Installare Xdebug \u00e8 facile. Dall&#8217;interno della sessione del terminale, dovrai eseguire <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-16-install-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">il seguente comando:<\/a><\/strong><\/p>\n<p>Una volta fatto, noterai che accadono diverse cose all&#8217;interno della finestra del terminale durante l&#8217;installazione. A meno che tu non sia particolarmente interessato, non devi preoccuparti di cosa sta facendo finch\u00e9 non ti riporta al prompt dei comandi.<\/p>\n<p>A questo punto il modulo Xdebug \u00e8 stato installato; tuttavia, dovrai dire a PHP che \u00e8 installato e dove pu\u00f2 trovare il modulo.<\/p>\n<p>Per installare l&#8217;estensione con la tua versione corrente di PHP, \u00e8 importante sapere quale versione di PHP hai installato. Se stai usando un gestore di pacchetti, allora potrebbero esserci pi\u00f9 versioni e dovrai dire al file di configurazione di quella particolare versione dove trovare il modulo.<\/p>\n<p>Al contrario, se hai una singola versione installata, dovrai indicare a una singola versione di PHP dove \u00e8 installata. Innanzitutto, puoi trovare dove esiste Xdebug sul file system usando <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-17-find-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo comando:<\/a><\/strong><\/p>\n<p>Quindi dovrai aggiornare il file di configurazione per la tua installazione di PHP. Per fare ci\u00f2, esegui semplicemente <strong>php -v<\/strong> dalla riga di comando e ti dir\u00e0 quale versione stai utilizzando. Da qui, dovrai individuare il file di inizializzazione per la versione di PHP che stai utilizzando. Se, durante l&#8217;esecuzione di <strong>php -v,<\/strong> torni con qualcosa del genere:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162717-61e743e0189a7.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162717-61e743e0189a7.png\" alt=\"Installazione di Xdebug, Parte 1: Il modulo Xdebug\"><\/a><\/p>\n<p>Questo ci dice che stiamo eseguendo PHP 7.1.19 (sebbene la tua versione possa variare). Da qui, sappiamo cercare un determinato file di configurazione PHP per questa versione di PHP. Per fare ci\u00f2, cerca <strong>php.ini<\/strong> nella directory \/usr\/local\/etc\/php\/7.1\/ del tuo sistema (sebbene il numero esatto della versione possa variare).<\/p>\n<p>Da l\u00ec, apri il file e quindi aggiungi <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-18-reference-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la seguente riga di codice:<\/a><\/strong><\/p>\n<pre><code>zend_extension=\"\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so\"<\/code><\/pre>\n<p>Questo dir\u00e0 a PHP dove risiede Xdebug in modo che possa essere utilizzato all&#8217;interno del tuo lavoro.<\/p>\n<h4>Testare l&#8217;installazione<\/h4>\n<p>Per verificare che l&#8217;installazione sia andata correttamente, puoi eseguire il seguente codice <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-19-verify-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nel tuo terminale:<\/a><\/strong><\/p>\n<p>E poi dovresti vedere qualcosa come il seguente output sullo schermo:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162717-61e743e0189a7.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162717-61e743e0189a7.png\" alt=\"Installazione di Xdebug, Parte 1: Il modulo Xdebug\"><\/a><\/p>\n<p>Nota che nello screenshot qui sopra, vedi quanto segue:<\/p>\n<blockquote>\n<p>con Xdebug v2.6.0, Copyright (c) 2002-2018, di Derick Rethans<\/p>\n<\/blockquote>\n<p>Ci\u00f2 significa che il modulo \u00e8 stato installato e che PHP ne \u00e8 a conoscenza.<\/p>\n<h2>Configurazione del tuo IDE<\/h2>\n<p>Nel prossimo post, esamineremo il collegamento di Xdebug nel nostro IDE. Supponendo che tu abbia seguito i passaggi in questo post e che tutto sia andato bene, dovresti essere a posto per quanto riguarda la preparazione per il debug dei progetti WordPress.<\/p>\n<p>Fino a quando non lo avremo in esecuzione all&#8217;interno di un IDE, tuttavia, non \u00e8 cos\u00ec utile (o \u00e8 pi\u00f9 difficile di quanto dovrebbe essere). Quindi la prossima settimana vedremo esattamente come farlo.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo post, tratteremo l&#8217;installazione di Xdebug in modo che sia disponibile nella nostra installazione di PHP. Alla fine, questo \u00e8 ci\u00f2 che ci consentir\u00e0 di eseguire il debug del nostro codice dall&#8217;interno di un IDE.<\/p>\n","protected":false},"author":1,"featured_media":236541,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,804,720],"tags":[1168],"class_list":["post-230967","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230967"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230967\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236541"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}