Debugowanie PHP za pomocą Xdebug w trybie CLI na przykładzie XAMPP lub WAMP oraz NetBeans

Nie wszyscy zdają sobie sprawę z tego, że w trybie CLI (czyli wywoływania z poziomu konsoli) można debugować skrypty PHP w równie łatwy sposób, co poprzez zwykłą przeglądarkę internetową. Wystarczy wykonać poniższe kroki, aby udało się to zrealizować bez niej.

1. Plik konfiguracyjny dla trybu CLI

Jeżeli korzystamy z XAMPP to PHP niezależnie od tego, czy jest uruchamiane w trybie CLI czy przez przeglądarkę, korzysta tylko z jednego pliku konfiguracyjnego umieszczonego w

\xampp\php\php.ini

Jeżeli korzystamy z WAMP to mamy osobny plik dla CLI i osobny dla non-CLI umieszczone w

wamp\bin\apache\Apache2.2.17\bin\php.ini – dla non-CLI
wamp\bin\php\php5.3.5\php.ini – dla CLI

Jeżeli chodzi o XAMPP to sprawa jest prosta, ale jeżeli chodzi o WAMP to musimy zadbać właśnie o to, żeby poprawna konfiguracja dla Xdebug znalazła się w pliku konfiguracyjnym właśnie dla CLI. Otwieramy więc właściwy plik (dla XAMPP lub WAMP) i sprawdzamy, czy na pewno mamy tam poniższe zapisy.

; XDEBUG Extension
zend_extension = "c:/wamp/bin/php/php5.3.5/zend_ext/php_xdebug-2.1.0-5.3-vc6.dll"
 
[xdebug]
xdebug.remote_enable = on
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"

Najważniejsza jest linijka xdebug.remote_enable = on która uruchamia Xdebug.

2. Zmienna środowiskowa

Kiedy korzystamy z przeglądarki to polecenie uruchomienia debugowania przekazujemy poprzez odpowiedni parametr GET o postaci

?XDEBUG_SESSION_START=netbeans-xdebug

Jeżeli chcemy przekazać rozkaz uruchomienia poprzez CLI to na konsoli, z której będziemy uruchamiać skrypt PHP wcześniej musimy ustawić odpowiednią zmienną środowiskową poleceniem

set XDEBUG_CONFIG=idekey=netbeans-xdebug

3. Rozpoczęcie debugowania w NetBeans

Kolejny krok to standardowe przełączenie NetBeans w tryb debugowania. Jeżeli otworzy się nam przy tym okno przeglądarki, to spokojnie możemy je zamknąć, bo NetBeans pozostanie w trybie debugowania.

4. Uruchomienie skryptu

Teraz pozostaje tylko postawienie breakpoint’ów i wywołanie skryptu PHP z konsoli w trybie CLI.