fix xdebug

This commit is contained in:
2026-07-23 23:07:21 +02:00
parent ad6fa5ef2a
commit 8f1fbbfeef
5 changed files with 32 additions and 14 deletions
+1 -1
View File
@@ -3,6 +3,6 @@ FROM php:8.5.8-cli
RUN pecl install xdebug && docker-php-ext-enable xdebug RUN pecl install xdebug && docker-php-ext-enable xdebug
WORKDIR /app WORKDIR /app
EXPOSE 8000 9013 EXPOSE 8000
CMD ["php", "-S", "0.0.0.0:8000", "-t", "public", "public/index.php"] CMD ["php", "-S", "0.0.0.0:8000", "-t", "public", "public/index.php"]
+2 -1
View File
@@ -5,5 +5,6 @@ xdebug.mode=develop,debug
xdebug.start_with_request=yes xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal xdebug.client_host=host.docker.internal
xdebug.client_port=9013 xdebug.client_port=9013
xdebug.log_level=0 xdebug.log=/tmp/xdebug.log
xdebug.log_level=7
xdebug.idekey=VSCODE xdebug.idekey=VSCODE
+1
View File
@@ -8,6 +8,7 @@
"name": "API - Listen for Xdebug", "name": "API - Listen for Xdebug",
"type": "php", "type": "php",
"request": "launch", "request": "launch",
"hostname": "0.0.0.0",
"port": 9013, "port": 9013,
"pathMappings": { "pathMappings": {
"/app": "${workspaceFolder}" "/app": "${workspaceFolder}"
+1 -1
View File
@@ -16,4 +16,4 @@ services:
- ./.docker/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini - ./.docker/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
#environment: #environment:
# XDEBUG_MODE: debug # XDEBUG_MODE: debug
# XDEBUG_CONFIG: client_host=host.docker.internal client_port=9003 start_with_request=yes # XDEBUG_CONFIG: client_host=host.docker.internal client_port=9013 start_with_request=yes
+25 -9
View File
@@ -15,12 +15,11 @@ Il progetto contiene già i file necessari per il debug:
- `.docker/php/Dockerfile` - container PHP con Xdebug - `.docker/php/Dockerfile` - container PHP con Xdebug
- `docker-compose.yml` - configurazione Docker - `docker-compose.yml` - configurazione Docker
- `.vscode/launch.json` - configurazione di avvio VS Code - `.vscode/launch.json` - configurazione di avvio VS Code
- `.vscode/settings.json` - impostazioni VS Code
Il container espone: Il servizio usa:
- **porta `8000`** per HTTP - **porta `8000`** per HTTP
- **porta `9003`** per Xdebug - **porta host `9013`** per la connessione in uscita di Xdebug verso VS Code
## 2. Avvia il container ## 2. Avvia il container
@@ -39,7 +38,7 @@ http://localhost:8000
## 3. Avvia il debug in VS Code ## 3. Avvia il debug in VS Code
1. Apri la sezione **Run and Debug** in VS Code (Ctrl+Shift+D) 1. Apri la sezione **Run and Debug** in VS Code (Ctrl+Shift+D)
2. Seleziona la configurazione: **Debug PHP in Docker** 2. Seleziona la configurazione: **API - Listen for Xdebug**
3. Premi **F5** per avviare il debugger 3. Premi **F5** per avviare il debugger
## 4. Imposta un breakpoint e testa ## 4. Imposta un breakpoint e testa
@@ -56,12 +55,15 @@ http://localhost:8000
http://localhost:8000/api/users http://localhost:8000/api/users
``` ```
3. Oppure usa curl con il trigger Xdebug: 3. Esegui la stessa richiesta con curl:
```bash ```bash
curl -H "XDEBUG_TRIGGER: 1" http://localhost:8000/api/users curl http://localhost:8000/api/users
``` ```
`xdebug.start_with_request=yes` avvia il tentativo di connessione per ogni
richiesta, quindi non serve aggiungere `XDEBUG_TRIGGER`.
Il debugger dovrebbe fermarsi sul breakpoint e permetterti di ispezionare le variabili. Il debugger dovrebbe fermarsi sul breakpoint e permetterti di ispezionare le variabili.
## 5. Risoluzione dei problemi ## 5. Risoluzione dei problemi
@@ -69,13 +71,14 @@ Il debugger dovrebbe fermarsi sul breakpoint e permetterti di ispezionare le var
### VS Code non si ferma sul breakpoint ### VS Code non si ferma sul breakpoint
- Verifica che Xdebug sia abilitato nel container - Verifica che Xdebug sia abilitato nel container
- Controlla che la configurazione `client_host` nel Dockerfile punti a `host.docker.internal` - Controlla che `xdebug.client_host` in `.docker/php/xdebug.ini` punti a
- Verifica che la porta 9003 sia disponibile e non bloccata dal firewall `host.docker.internal`
- Verifica che la porta 9013 sia disponibile e non bloccata dal firewall
### Il container non si avvia ### Il container non si avvia
- Assicurati che Docker Desktop sia in esecuzione - Assicurati che Docker Desktop sia in esecuzione
- Verifica che le porte 8000 e 9003 non siano già in uso - Verifica che la porta HTTP 8000 non sia già in uso
- Controlla i log di Docker per errori specifici - Controlla i log di Docker per errori specifici
### "Failed to fetch" dalle richieste del frontend ### "Failed to fetch" dalle richieste del frontend
@@ -84,6 +87,19 @@ Il debugger dovrebbe fermarsi sul breakpoint e permetterti di ispezionare le var
- Controlla che `allowed_origins` in `config/config.php` includa l'origine del frontend - Controlla che `allowed_origins` in `config/config.php` includa l'origine del frontend
- Testa con l'endpoint di diagnostica `/cors-check` - Testa con l'endpoint di diagnostica `/cors-check`
### Diagnostica avanzata dei breakpoint
Il log Xdebug è scritto nel container in `/tmp/xdebug.log`. Per analizzare anche
la registrazione e la risoluzione dei breakpoint, imposta temporaneamente
`xdebug.log_level=10` in `.docker/php/xdebug.ini`, riavvia il container e usa:
```bash
docker exec elixforms-ws tail -f /tmp/xdebug.log
```
Al termine ripristina `xdebug.log_level=7`, perché il livello 10 produce molti
dettagli per ogni riga eseguita.
## Note ## Note
- La procedura di debug influisce solo sulla sessione VS Code, il server continua a funzionare normalmente - La procedura di debug influisce solo sulla sessione VS Code, il server continua a funzionare normalmente