← Tutti gli articoliPHP e database

PHP e database

Debuggare php shell script con xdebug e Phpstorm

Matteo Galacci ·

Verifica che PHP da terminale carichi Xdebug: CLI e PHP-FPM possono leggere configurazioni diverse.

php --ini
php --ri xdebug

In PhpStorm attiva l’ascolto delle connessioni di debug e controlla la porta 9003. Da una shell POSIX avvia una sola esecuzione così:

XDEBUG_MODE=debug XDEBUG_TRIGGER=1 php script.php

L’esempio presume Xdebug 3 configurato con xdebug.start_with_request=trigger e IDE raggiungibile. Se hai impostato xdebug.trigger_value, il trigger deve corrispondere. In container o macchine remote configura xdebug.client_host e i mapping dei percorsi: localhost è il sistema che esegue PHP, non necessariamente quello dell’IDE.

Queste variabili valgono per il comando, senza modificare permanentemente l’ambiente. Per il profiling e la configurazione INI vedi la guida dedicata.

Prova con un breakpoint

Crea script.php con questo contenuto e metti un breakpoint sulla riga echo in PhpStorm:

<?php
$totale = 2 + 3;
echo $totale, PHP_EOL;

Esegui il comando con XDEBUG_MODE e XDEBUG_TRIGGER riportato sopra. L’IDE deve fermarsi prima di echo e mostrare totale uguale a 5. Se il programma termina subito, ricontrolla ascolto dell’IDE, php --ri xdebug nella stessa shell, client_host e porta 9003. Non confondere l’estensione caricata nel web server con quella della CLI.

Fonti e approfondimenti