Vai al contenuto

Laravel Homestead: usare XDebug con VSCode e PHP 8.1

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:

  1. Apri la sezione delle “Configurazioni di debug” in VSCode (F5).
  2. Crea una nuova configurazione di debug e seleziona “PHP” come tipo.
  3. 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Per rispondere sul tuo sito web, inserisci l'URL della tua risposta che dovrebbe contenere un link all'URL del permalink di questo post. La tua risposta verrà quindi visualizzata (possibilmente dopo la moderazione) in questa pagina. Vuoi aggiornare o rimuovere la tua risposta? Aggiorna o elimina il tuo post e inserisci nuovamente l'URL del tuo post. (Ulteriori informazioni)