Se stai sviluppando un’applicazione web con Laravel utilizzando Laravel Homestead, probabilmente ti sarai reso conto che avere uno strumento di debugging è fondamentale per accelerare il processo di sviluppo e risolvere eventuali errori. In questo post ti guiderò attraverso la configurazione di XDebug per VSCode su Laravel Homestead.
Passo 1: Installazione di XDebug
Laravel Homestead viene già fornito con XDebug installato e può essere attivato utilizzando il comando xon
.
Quindi entra in SSH nella tua macchina e dalla console esegui:
xon
Puoi controllare se ha attivato XDebug eseguendo:
php -v
Se vedi “with Xdebug”, allora sai che xdebug è stato abilitato.
PHP 8.1.12 (cli) (built: Oct 28 2022 17:39:37) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.12, Copyright (c) Zend Technologies with Zend OPcache v8.1.12, Copyright (c), by Zend Technologies with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
Passo 2: Configurazione di XDebug
Se stai usando Xdebug 3.0 e versioni successive potresti ricevere alcuni errori che ti informano che i valori di configurazione sono cambiati. Questo perché le impostazioni di configurazione nel file xdebug.ini hanno i vecchi valori di configurazione 2.0.
Questo è ciò che vedremo dopo. Per individuare il file xdebug.ini eseguire i comandi seguenti:
php --ini | grep 'xdebug'
Nel mio caso il file ini si trovava in /etc/php/8.1/cli/conf.d/20-xdebug.ini
Una cosa da notare è che il tuo valore client_host potrebbe essere diverso e puoi trovarlo eseguendo prima questo comando:
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
Nel caso il commando netstat non sia installato, netstat
fa parte del pacchetto net-tools
, puoi installarlo lanciando il comando:
sudo apt-get install net-tools
Poi puoi/devi modificare il file /etc/php/8.1/cli/conf.d/20-xdebug.ini
e aggiungere i seguenti valori di configurazione:
zend_extension=xdebug.so xdebug.mode = debug xdebug.discover_client_host = 1 xdebug.start_with_request = yes xdebug.client_host = 10.0.2.2 xdebug.client_port = 9003 xdebug.idekey = VSCODE xdebug.max_nesting_level = 512 xdebug.log_level = 0 # xdebug.connect_timeout_ms = 200
Come verificare se la porta 9003 è già in uso? Puoi verificare usando il comando:
sudo lsof -i -P -n | grep LISTEN
Ora il setup è quasi terminato, ti basterà riavviare il servizio PHP-FPM
con il comando:
sudo service php8.1-fpm restart
Passo 3: Configurazione di VSCode
Dopo aver configurato XDebug sulla tua macchina virtuale Homestead, è il momento di configurare VSCode per utilizzarlo. Installa l’estensione “PHP Debug” e segui questi passaggi:
- Apri la sezione delle “Configurazioni di debug” in VSCode (F5).
- Crea una nuova configurazione di debug e seleziona “PHP” come tipo.
- Modifica la configurazione come segue:
{
"name": "Listen for XDebug on Homestead",
"type": "php",
"request": "launch",
"pathMappings": {
"/home/vagrant/code/<appname>": "${workspaceRoot}"
},
"log": false,
"port": 9003
}
La sezione pathMappings
è importante poiché stabilisce il collegamento tra la tua macchina virtuale Homestead e il tuo progetto Laravel sul tuo computer.
Passo 4: Esegui il debug
Ora sei pronto per eseguire il debug con VSCode. Assicurati che il server web sia in esecuzione e che l’estensione “PHP Debug” sia attivata. Aggiungi un breakpoint al tuo codice e fai clic sul pulsante “Avvia il debug” nella sezione delle “Configurazioni di debug”. Ora, quando visiti la pagina del tuo sito web, VSCode dovrebbe intercettare la richiesta e mostrarti il punto in cui è stato raggiunto il breakpoint.
In conclusione, l’utilizzo di XDebug con VSCode è un’ottima soluzione per il debugging delle applicazioni Laravel su Homestead. Seguendo questi passaggi, sarai in grado di risolvere facilmente eventuali problemi nel tuo codice e accelerare il tuo processo di sviluppo.