Odwieczne pytania na które nikt nie znał odpowiedzi: w jaki sposób wykonywać krokowo program napisany w PHP? Czy raz uruchomiony interpreter można wstrzymać? Czy można podglądać stan zmiennych oraz stos wywołań w trakcie działania skryptu?
Ostatnio dowiedziałem się, że można. Co więcej, taka możliwość istnieje już od około 2003 roku. Rozwiązaniem jest rozszerzenie PHP o nazwie XDebug. Początkowo plugin mógł współpracować wyłącznie z frameworkiem Zend. Od jakiegoś czasu działa również m.in. z CodeIgniter’em.
Aby móc skorzystać z tego dobrodziejstwa, należy edytować plik php.ini i wstawić linie (na samym dole pliku):
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug.dll"
xdebug.default_enable = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_log="c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "c:\xampp\tmp"
xdebug.remote_cookie_expire_time = 36000
W przypadku dystrybucji XAMPP, plik php_xdebug.dll powinien już znajdować się w folderze php/ext. Jeśli używacie innych paczek, xdebug należy ściągnąć ze strony www. Należy pamiętać o wybraniu odpowiedniej wersji (https://xdebug.org/download.php).
Do debugowania aplikacji WWW najlepiej użyć jakiegoś IDE. W tym przypadku bezproblemowy okazał się NetBeans z rozszerzeniami PHP.