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 *