Come installare Xdebug in un ambiente di sviluppo su Visual Studio Code, all'interno di un Docker container su WSL.
Aggiungere questo nel Dockerfile:
FROM php:<tag che usi>
# La tua roba
# ...
# Se usi l'immagine ufficiale di PHP, attenzione a creare il php.ini
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" # per la produzione
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" # per lo sviluppo
# Install Xdebug
RUN apk add build-base \
&& apk add --no-cache --update --virtual buildDeps autoconf \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& apk del buildDeps
Poi mettere questo nel launch.json di VSCode:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"pathMappings": {
"/code": "${workspaceFolder}"
},
"hostname": "localhost"
},
]
}
E questo nel php.ini:
; XDebug settings
xdebug.mode=debug,develop
xdebug.start_with_request=yes
Installare l’estensione ufficiale di Xdebug su VSCode.
A questo punto:
- Esegui il debugger di VSCode configurato prima: "Listen for XDebug"
- Imposta i breakpoints
- Esegui il codice (via test o via chiamata HTTP dal browser)
Se i breakpoints non venissero colpiti, potrebbe essere necessario impostare la seguente regola sul firewall di Windows:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow