2.5 KiB
2.5 KiB
Debug delle API PHP in VS Code con Docker
Queste istruzioni permettono di fare debug delle API PHP servite con Docker direttamente da Visual Studio Code.
Prerequisiti
- Docker Desktop installato e in esecuzione
- Visual Studio Code
- Estensione PHP per VS Code
1. Configurazione del progetto
Il progetto contiene già i file necessari per il debug:
.docker/php/Dockerfile- container PHP con Xdebugdocker-compose.yml- configurazione Docker.vscode/launch.json- configurazione di avvio VS Code.vscode/settings.json- impostazioni VS Code
Il container espone:
- porta
8000per HTTP - porta
9003per Xdebug
2. Avvia il container
Dalla root del progetto esegui:
docker compose up --build
Il server PHP sarà disponibile su:
http://localhost:8000
3. Avvia il debug in VS Code
- Apri la sezione Run and Debug in VS Code (Ctrl+Shift+D)
- Seleziona la configurazione: Debug PHP in Docker
- Premi F5 per avviare il debugger
4. Imposta un breakpoint e testa
-
Aggiungi un breakpoint in un controller, ad esempio:
src/Api/Controllers/V1/UsersController.php -
Richiama un endpoint tramite browser:
http://localhost:8000/api/users -
Oppure usa curl con il trigger Xdebug:
curl -H "XDEBUG_TRIGGER: 1" http://localhost:8000/api/users
Il debugger dovrebbe fermarsi sul breakpoint e permetterti di ispezionare le variabili.
5. Risoluzione dei problemi
VS Code non si ferma sul breakpoint
- Verifica che Xdebug sia abilitato nel container
- Controlla che la configurazione
client_hostnel Dockerfile punti ahost.docker.internal - Verifica che la porta 9003 sia disponibile e non bloccata dal firewall
Il container non si avvia
- Assicurati che Docker Desktop sia in esecuzione
- Verifica che le porte 8000 e 9003 non siano già in uso
- Controlla i log di Docker per errori specifici
"Failed to fetch" dalle richieste del frontend
- Verifica che il frontend abbia il CORS correttamente configurato
- Controlla che
allowed_originsinconfig/config.phpincluda l'origine del frontend - Testa con l'endpoint di diagnostica
/cors-check
Note
- La procedura di debug influisce solo sulla sessione VS Code, il server continua a funzionare normalmente
- È possibile debug con i breakpoint condizionali per limitare i fermi
- Usa la console di debug di VS Code per eseguire comandi PHP durante il debug