Come Xdebug può aiutarti a diventare uno sviluppatore WordPress migliore
Pubblicato: 2022-10-11Come può attestare qualsiasi sviluppatore, il codice non è mai pronto per la produzione dopo la prima bozza. Una parte fondamentale del processo di sviluppo è il debug, ovvero la rimozione o la modifica di tutte le parti del codice che non funzionano.
L'estensione Xdebug per PHP è un modo popolare per sradicare e distruggere tutti i bug nel tuo codice.
Uno dei grandi aspetti di Xdebug è la sua flessibilità. Indipendentemente dal tuo framework o ambiente di sviluppo preferito, sarai in grado di trovare una versione di Xdebug che si inserisce nel tuo flusso di lavoro. Da lì, ottenere una maniglia sullo strumento non richiederà molto tempo.
Questo tutorial esaminerà Xdebug in modo approfondito, incluso il processo di installazione, l'integrazione nella configurazione e l'utilizzo generale.
Per prima cosa, ti diamo più contesto su cosa è Xdebug e cosa fa.
Presentazione di Xdebug
Xdebug è una delle estensioni più popolari per eseguire il debug del tuo codice PHP. Lo installerai dall'ambiente prescelto e funge da "debugger di passaggi".
In breve, questo ti consente di lavorare sul tuo codice riga per riga in modo da poter esaminare e osservare come il codice agisce e interagisce all'interno del tuo programma, oltre a studiarne l'output. Da lì, puoi apportare modifiche come meglio credi.
Xdebug può fare molto di più, però:
- Puoi analizzare le prestazioni del tuo codice utilizzando una serie di metriche e visualizzazioni.
- Quando esegui unit test PHP, puoi vedere quali suite di codice esegui ed esegui.
- Xdebug include funzionalità di "tracciamento", che scriveranno ogni chiamata di funzione su disco. Ciò includerà argomenti, assegnazioni di variabili e valori di ritorno.
- Xdebug apporta anche miglioramenti alla segnalazione degli errori PHP standard. Ne tratteremo di più in seguito.
Dato il set di funzionalità, ci sono molti modi per usare Xdebug (e qualsiasi debugger simile) all'interno del tuo flusso di lavoro. Li tratteremo nella prossima sezione.
twittarePerché vorresti usare Xdebug
Molti sviluppatori non disporranno di un flusso di lavoro di debug dedicato che utilizza strumenti ed estensioni di terze parti. Questo perché PHP include la propria registrazione degli errori rudimentale. Utilizzerai comandi come error_log
, var_dump
e print per vedere i risultati delle variabili e delle chiamate di funzione.
Ad esempio, ci sono molti snippet che puoi riutilizzare per lo sviluppo di WordPress — Stack Overflow ne è ricco:
function log_me($message) { if ( WP_DEBUG === true ) { if ( is_array($message) || is_object($message) ) { error_log( print_r($message, true) ); } else { error_log( $message ); } } }
Tuttavia, ci sono alcuni importanti svantaggi di questo approccio:
- Per prima cosa devi assicurarti di abilitare i registri degli errori per la piattaforma con cui stai lavorando. In questo caso, ti consigliamo di abilitare
WP_DEBUG
(ne parleremo a breve). - Questo esempio di debug "dump" offre meno possibilità di indagine rispetto al debug a fasi. Qui puoi produrre solo ciò che definisci.
Quest'ultimo punto richiede molto sforzo manuale, specialmente se il tuo lavoro quotidiano non è quello di amministratore di sistema. Ad esempio, se desideri eseguire il debug di un blocco di codice, puoi aggiungere il tuo snippet in base a una variabile da te definita. Tuttavia, potrebbe non essere la fonte del problema o addirittura indicare cosa sta succedendo.
Invece, uno strumento come Xdebug può fare la sua magia per fornire una portata maggiore:
- Puoi "rompere" il tuo codice in vari punti durante l'esecuzione per vedere cosa sta succedendo in tempo reale.
- Ci sono una miriade di metriche, visualizzazioni, rami e altro per aiutarti ad accertare cosa sta facendo il tuo codice e come risponde.
- A volte, puoi persino modificare i valori al volo durante il processo di debug. Ciò offre un valore immenso, anche per suite di codice che funzionano bene. Puoi essenzialmente eseguire unit test manuali in qualsiasi momento.
- Poiché utilizzi i punti di interruzione per contrassegnare le aree di cui eseguire il debug, non è necessario utilizzare i frammenti di codice all'interno del codice. Ciò mantiene il codice più pulito e riduce il numero di problemi futuri.
Nel complesso, l'utilizzo di uno strumento come Xdebug è una decisione proattiva piuttosto che reattiva. È possibile utilizzare il debug dei passaggi come parte del processo di sviluppo principale, proprio come l'implementazione di unit test come parte dello sviluppo guidato dai test (TDD).
Come attivare la registrazione degli errori PHP
Sebbene tu possa eseguire il debug del tuo codice senza un errore specifico, è spesso utile sapere se si verifica un problema senza che Xdebug sia aperto. Questo ti dà un punto di partenza per l'esplorazione. Non è strettamente necessario, ma può essere una parte utile della tua catena.
Per segnalare ogni errore che si verifica, dovrai aggiungere una riga all'inizio del file PHP pertinente:
error_reporting(E_ALL);
Questo è un comando catch-all e puoi ottenere lo stesso usando la funzione ini_set
:
ini_set('error_reporting', E_ALL);
Ciò ti consente di modificare le impostazioni all'interno del tuo file php.ini progetto per progetto. Sebbene tu possa entrare in questo file e apportare una modifica manuale, è spesso un'idea migliore lavorare con ini_set
per modificare il parametro specifico:
ini_set('display_errors', '1');
Dopo aver impostato la segnalazione degli errori attiva a tuo piacimento, puoi iniziare a lavorare con Xdebug.
Come usare Xdebug
Nelle prossime sezioni, ti mostreremo come usare Xdebug, inclusi i passaggi necessari per configurare le cose. Anche se non possiamo coprire ogni aspetto dello strumento, questa guida rapida ti farà andare veloce.
Prima, però, devi installare Xdebug. Scopriamo come farlo.
1. Installa Xdebug per il tuo sistema operativo (OS)
Poiché Xdebug è adattabile a qualsiasi numero di configurazioni, il processo esatto per ciascuna sarà leggermente diverso. A livello di sistema operativo, ci sono alcune differenze:
- Windows: questo è un processo di installazione alquanto complicato che prevede l'utilizzo di un file PHP esistente e una procedura guidata di installazione, quindi il download della versione corretta per il tuo sistema.
- Linux: il metodo qui è probabilmente il più semplice: puoi utilizzare un gestore di pacchetti per installare Xdebug o la libreria della comunità di estensione PHP (PECL).
- Mac: anche questo metodo è semplice: una volta installato PECL, puoi eseguire
pecl install xdebug
da un'istanza Terminal. Dovrai anche avere gli strumenti da riga di comando XCode e PHP installati sul tuo sistema.
Tuttavia, la maggior parte degli utenti non vorrà restare con un'istanza a livello di sistema di Xdebug. Invece, ti consigliamo di integrarlo nel tuo ambiente di sviluppo.
2. Integra Xdebug nel tuo ambiente di sviluppo
Dopo aver installato Xdebug per il tuo sistema operativo, dovresti connetterlo al tuo ambiente.
Ci sono così tanti sistemi e strumenti supportati qui che non possiamo esaminarli tutti. Successivamente, ti offriremo le istruzioni sia per DevKinsta che per PhpStorm. Anche così, ci sono molti altri ambienti popolari tra cui scegliere. Di seguito sono riportati alcuni dei nostri migliori consigli.
Vagabondi variabili (VVV)
VVV è uno degli ambienti denominati sul sito Web di Make WordPress:
La buona notizia è che VVV include già una versione di Xdebug, ma è necessario attivarla. Puoi farlo utilizzando Secure Shell (SSH) all'interno di una finestra di Terminale:
vagrant ssh -c "switch_php_debugmod xdebug"
Tuttavia, c'è un piccolo calo delle prestazioni e dovrai riattivare questa opzione se esegui il provisioning dei tuoi siti.
Laravel cameriere
Per alcuni utenti, Valet di Laravel rappresenta un ambiente di sviluppo web quasi perfetto. Ancora meglio, puoi integrare Xdebug con esso.
Per fare ciò, dovrai creare un file di configurazione per il debugger. Puoi trovare il tuo percorso usando php --ini
nella riga di comando, che restituirà alcuni percorsi di file diversi:
Quindi, crea un nuovo file xdebug.ini nel percorso per altri file .ini . Nel nostro esempio, è in /opt/homebrew/etc/php/7.4/conf.d .
Una volta aperto questo nuovo file, apri anche il percorso del file di configurazione caricato (il tuo file php.ini principale). Con entrambi aperti, aggiungi quanto segue in fondo:
- php.ini:
zend_extension="xdebug.so"
- xdebug.ini:
xdebug.mode=debug
Dopo aver salvato le modifiche, esegui valet restart
dal Terminale, quindi aggiungi phpinfo(); exit;
phpinfo(); exit;
in uno dei file del tuo sito. Ti consigliamo di verificare se funziona tramite un rapido caricamento della pagina all'interno del browser.
Si noti che potrebbe essere necessario riavviare PHP utilizzando sudo brew services restart php
e verificare che l'installazione di sistema di Xdebug sia corretta utilizzando php --info | grep xdebug
php --info | grep xdebug
. Noterai le righe specifiche di Xdebug all'interno dell'output:
Da qui, puoi cercare di incorporare Xdebug nel tuo editor di codice preferito.
XAMPP
Proprio come Valet, ci sono alcune parti del processo per XAMPP. Tuttavia, le versioni di Windows e macOS hanno due processi diversi.
Inizia installando XAMPP, quindi esegui un rapido controllo per vedere se il file php_xdebug.dll (Windows) o il file xdebug.so (macOS) esiste sul tuo sistema:
Se il file esiste, puoi passare alla configurazione. Altrimenti, dovrai prima scaricare il binario giusto per Windows, un file a 64 bit per la tua versione PHP preferita, o installare alcune altre dipendenze se sei su un Mac.
Per Windows, rinomina il file DLL php_xdebug.dll , quindi spostalo nel percorso del file \xampp\php\ext . Quindi, apri il file \xampp\php\php.ini nel tuo editor di codice preferito e aggiungi quanto segue:
output_buffering = Off
Nella sezione [XDebug]
, aggiungi le tre righe successive:
zend_extension=xdebug xdebug.mode=debug xdebug.start_with_request=trigger
Dopo aver salvato le modifiche, riavvia Apache e verifica Xdebug.
Per Mac, assicurati di installare gli strumenti della riga di comando di Xcode utilizzando xcode-select --install
in un'istanza Terminal. Dopodiché, ci sono tre pacchetti che vorrai installare usando Homebrew:
brew install autoconf automake libtool
In alcuni casi, dovrai anche reinstallare XAMPP per ottenere sia il programma principale che i "File dello sviluppatore". Dovresti essere in grado di reinstallare solo questi file, ma ti consigliamo di eseguire prima un backup della configurazione esistente.
Quindi, vai al download per la cartella dei sorgenti di Xdebug sul tuo sistema e decomprimi il file TGZ. All'interno di una finestra di Terminale, vai a quella directory ed esegui quanto segue:
phpize pecl install xdebug
Nota che potresti dover usare sudo
anche qui. Da qui, puoi modificare il file php.ini di XAMPP. Per la maggior parte delle installazioni di macOS, lo troverai in /Applications/XAMPP/xamppfiles/etc/php.ini . All'interno di questa directory, troverai anche il percorso del tuo file xdebug.so : annotalo e usalo al posto del segnaposto del percorso del file per questo snippet:
[xdebug] zend_extension=/path/to/xdebug.so xdebug.mode=develop,degug xdebug.start_with_request=yes
Per verificare se funziona, crea un nuovo file xdebug_info.php all'interno della directory principale di htdocs XAMPP. All'interno, aggiungi quanto segue:
<?php xdebug_info();
…quindi aggiorna Apache e prova Xdebug nel browser.
Utilizzo di PhpStorm con Xdebug
Dopo aver installato Xdebug tramite il sistema operativo e l'ambiente di sviluppo, dovrai anche visualizzare il debugger stesso. Lo farai tramite l'editor di codice scelto o l'ambiente di sviluppo integrato (IDE). Come per il tuo ambiente, ce ne sono così tanti tra cui scegliere e ognuno potrebbe avere un approccio diverso.
Detto questo, molti sviluppatori scelgono di utilizzare PhpStorm di JetBrains. In effetti, PhpStorm offre "assistenza sensibile a WordPress" ed è una scelta popolare anche per molti altri motivi.
Il sito Web di JetBrains include istruzioni complete sulla connessione di Xdebug e PhpStorm, ma le esamineremo qui.
Per prima cosa, vai alla pagina Languages & Frameworks > PHP all'interno del pannello Preferenze . Qui, apri il menu kebab More Items accanto al campo a discesa CLI Interpreter :
Questo mostrerà alcuni ulteriori dettagli sulla tua versione e interprete di PHP. Se fai clic sui puntini di sospensione Altri elementi accanto all'opzione File di configurazione , vedrai i percorsi completi per il tuo file php.ini :
Lavorerai con questo file PHP in seguito per continuare il processo di installazione.
Lavorare all'interno del file php.ini
Il primo compito qui è modificare tutte le righe che influiscono sul modo in cui Xdebug funzionerà con PhpStorm.
All'interno del file php.ini , cerca le seguenti righe e rimuovile o commentale:
zend_extension=<path_to_zend_debugger> zend_extension=<path_to_zend_optimizer>
Queste linee non saranno presenti in tutti i casi, quindi non allarmarti se non le vedi.
Quindi, aggiungi quanto segue al file:
[xdebug] zend_extension="xdebug.so" xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port="<the port (9003 by default) to which Xdebug connects>"
Ci sono alcune cose da notare su questa suite di codice:
- Potresti già avere una sezione
[xdebug]
, nel qual caso puoi omettere la prima designazione. - La voce
zend_extension
potrebbe richiedere l'aggiunta del percorso completo di xdebug.so per la connessione. - Sebbene possa sembrare un segnaposto, il parametro
xdebug.client_port
è il modo in cui lo imposterai all'interno del tuo codice.
Una volta aggiunti questi, salva e chiudi il file, quindi testa la versione PHP dalla riga di comando (usando php --version
):
Se hai una versione funzionante di Xdebug, verrà mostrata come una delle estensioni PHP. Puoi anche aggiungere phpinfo();
in un nuovo file e testarlo nel browser.
Questo è praticamente tutto ciò che devi fare per far funzionare Xdebug come debugger predefinito con PhpStorm. L'ultimo passaggio prima di utilizzarlo è l'installazione di un'estensione di supporto del browser.
Installazione di un'estensione di supporto del browser
L'ultima connessione chiave che dovrai effettuare è tra il tuo browser e PhpStorm, ottenuta attivando il debug dei passaggi sul server. Sebbene tu possa farlo dalla riga di comando usando valori GET
o POST
speciali, è più semplice usare un'estensione.
Ti consigliamo di utilizzare l'estensione dedicata Xdebug Helper. Puoi installarlo sul tuo browser preferito:
- Xdebug Helper per Chrome/Chromium/Brave
- Xdebug Helper per Firefox
- Xdebug Helper per Safari
Se desideri esplorare altre estensioni, il sito Web di JetBrains offre alcune opzioni aggiuntive per i browser più diffusi.
Dopo aver installato l'estensione del browser scelta, non dovresti dover modificare ulteriori impostazioni di configurazione. Da qui, puoi iniziare a usare Xdebug con PhpStorm.
Utilizzo di Xdebug
Mentre useremo PhpStorm qui, vedrai un layout e un'interfaccia simili tra IDE diversi, anche se ci saranno anche alcune differenze evidenti.
Ci sono alcuni concetti che si combinano per formare l'intera esperienza di debug:
- Punti di interruzione: questi sono i punti in cui Xdebug si fermerà per consentirti di ispezionare l'output. Puoi impostarne quanti ne desideri.
- Ascolto delle connessioni: puoi attivare e disattivare questa opzione, anche se la maggior parte degli sviluppatori la lascerà sempre attiva.
- La schermata di debug: la maggior parte del tuo tempo verrà spesa all'interno dell'interfaccia di debug — è lì che lavorerai con le varie righe di codice, variabili e parametri.
Il primo passo è attivare l'ascolto: senza di esso non sarai in grado di eseguire il debug di nulla. Per fare ciò, fai clic sull'opzione Esegui > Avvia ascolto per connessioni di debug PHP nella barra degli strumenti:
In alternativa, puoi fare clic sull'icona "telefono" nella barra degli strumenti di PhpStorm:
Una di queste opzioni avvierà l'ascolto delle connessioni.
Da qui, puoi iniziare a impostare punti di interruzione all'interno delle grondaie dell'editor di codice. Un punto rosso indica un punto di interruzione, su cui puoi fare clic per attivare:
Quando vuoi eseguire il debug del tuo codice, il modo più semplice è iniziare ad ascoltare, impostare punti di interruzione, quindi andare alla pagina specifica nel tuo browser. Individua l'icona della tua estensione all'interno del browser, quindi fai clic su di essa e seleziona l'opzione "Debug":
Questo aprirà il debugger in PhpStorm e fornirà la buona o la cattiva notizia:
Se fai clic con il pulsante destro del mouse sui vari valori, attributi, parametri e variabili, potrai accedere a un ulteriore menu contestuale. Questo ti dà molto spazio in più per testare ed eseguire il debug del tuo codice:
Ad esempio, puoi impostare valori diversi per le variabili lungo il percorso. Questo potrebbe essere un tentativo deliberato di violare il codice e vedere cosa succede, oppure potrebbe essere un modo per testare il codice che necessita già di una correzione. Ad ogni modo, questo ti offre un metodo fantastico per eseguire il debug del tuo codice senza doverlo prima alterare.
In che modo Kinsta ti aiuta a eseguire il debug del tuo sito Web WordPress
WordPress viene fornito con il proprio set di opzioni di debug tramite WP_DEBUG
e altri strumenti, come Query Monitor. Questi abilitano una modalità in cui inizierai a vedere messaggi di errore precedentemente nascosti su tutto il tuo sito e dashboard. Da lì, puoi iniziare a capire qual è il problema.
Puoi anche salvare quei messaggi di errore usando WP_DEBUG_LOG
, che ti dà un modo per documentare i problemi con il tuo sito. Copriamo come impostare questo in un altro articolo sul blog. È un gioco da ragazzi da configurare tramite la dashboard di MyKinsta (e la schermata Siti > Strumenti ):
Se lo abbini allo strumento gratuito per l'ambiente locale DevKinsta, avrai anche un modo con un clic per abilitare e disabilitare WP_DEBUG
per ogni sito che crei:
Ciò significa che puoi rilevare gli errori sul tuo sito durante lo sviluppo e assicurarti che non arrivino al tuo sito live. Queste modalità sono anche facili da disattivare, vitali per la sicurezza del sito e dell'utente.
Tutti i piani Kinsta includono anche lo strumento APM Kinsta integrato, che è il nostro strumento di monitoraggio delle prestazioni personalizzato per i siti WordPress.
Foglio informativo sui comandi
Prima di concludere questo post, dovremmo menzionare le scorciatoie.
Come molti altri software, ci sono vari modi per navigare in Xdebug (e PhpStorm) usando solo la tastiera. In effetti, potresti persino utilizzare la riga di comando per eseguire il debug degli script PHP.
Una volta che Xdebug è attivo e funzionante, puoi usare i seguenti comandi per spostarti:
Comando | Scorciatoia |
---|---|
Specificare la porta su cui ascoltare (come [9003] ) | -p [value] |
Imposta un punto di interruzione sulla riga specificata per il percorso del file specificato. | breakpoint_set -t line file:///<path> -n <line> |
Esegue lo script fino alla fine o al punto di interruzione successivo | run |
Passa alla riga eseguibile successiva | step_into |
Elenca variabili e valori nell'ambito corrente | context_get |
Visualizza il valore della proprietà specificata | property_get -n <property> |
Mentre il tuo editor di codice specifico avrà le sue scorciatoie dedicate, l'attenzione qui è su PhpStorm. Dai un'occhiata a questa tabella di scorciatoie da tastiera per l'utilizzo di Xdebug con PhpStorm:
Comando | finestre | Mac OS |
---|---|---|
Trova azione | CTRL + MAIUSC + A | Maiusc + Cmd + A |
Apri il debugger | Maiusc + F9 | CTRL + D |
Attiva/disattiva punto di interruzione | Controllo + F8 | Cmd + F8 |
Entra | F7 | F7 |
Scavalcare | F8 | F8 |
Visualizza punti di interruzione | CTRL + MAIUSC + F8 | Maiusc + Cmd + F8 |
Riprendi il programma | F9 | F9 |
Valuta l'espressione corrente | Alt + F8 | Opzione + F8 |
Per fortuna, non c'è molto da memorizzare qui. È necessario aprire il debugger, impostare punti di interruzione per riga, ascoltare le connessioni ed eseguire gli script.
Tuttavia, se hai bisogno di una scorciatoia per un'attività particolare, puoi utilizzare il comando PhpStorm Find Action :
Una volta che inizi a digitare in questo spazio, ti verrà mostrato un elenco dinamico di comandi e relative scorciatoie. Puoi anche trovare una versione PDF di tutte le scorciatoie da tastiera tramite il menu Guida > PDF Scorciatoie da tastiera .
Se vuoi dare un'occhiata più in tempo reale alle scorciatoie mentre lavori con il mouse, JetBrains fornisce il plug-in Key Promoter X:
Questo pratico strumento visualizzerà le notifiche dell'ultima azione eseguita, insieme alla relativa scorciatoia da tastiera. Dopo aver appreso e utilizzato le scorciatoie, puoi eliminare gradualmente questo plug-in e ripristinare quel prezioso immobile sul tuo schermo.
twittareRiepilogo
La pratica del debugging ha fatto molta strada dai suoi umili inizi; ora comprende una portata molto più ampia di quanto i suoi progenitori avrebbero potuto immaginare. Per eseguire un lavoro completo quando si tratta di correggere il codice PHP, dovrai utilizzare uno strumento competente. Ci sono molte superbe estensioni e strumenti tra cui scegliere, ma Xdebug è un discutibile capofila.
Come abbiamo visto, Xdebug può adattarsi anche ai gusti più eclettici degli editor di codice, ed è particolarmente eccezionale se abbinato a PhpStorm. Tuttavia, indipendentemente dalla tua configurazione, ci sarà spesso una versione di Xdebug adatta alle tue esigenze. Nel complesso, è uno strumento potente, flessibile e intuitivo da utilizzare.
Pensi che Xdebug meriti il suo elogio o c'è un altro strumento di debug che preferisci? Fatecelo sapere nella sezione commenti qui sotto!