Instalacja i używanie debugera Xdebug w środowisku Xampp na Windows 7. Kroki oparte na instrukcji ze strony Netbeansa (patrz źródło 1).
- Kopiujemy wyjście phpinfo() do schowka. Można to zrobić szybko wklejając w konsoli Windowsa (Win + r, cmd) linię php -r "echo phpinfo();" | clip .
- Wklejamy zawartość schowka na stronie http://xdebug.org/wizard.php w polu tekstowym i klikamy Analyse my phpinfo() output.
- Po załadowaniu strony wykonujemy kroki z sekcji Instructions:
- pobieramy wskazany plik *.dll
- przenosimy pobrany plik do wskazanego katalogu
- edytujemy plik php.ini, żeby dodać do niego odpowiedni wpis (np. taki zend_extension = D:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll )
- Do pliku php.ini (tego samego co w punkcie wyżej) dopisujemy linie wylistowane poniżej. Wartość idkey jest przykładowa – można zamiast niej użyć równie dobrze słowa kot, byle zrobić to w każdym miejscu wymienionym dalej.
123456789xdebug.remote_enable = 1xdebug.remote_autostart = 0xdebug.remote_connect_back = 0xdebug.remote_handler = dbgpxdebug.remote_mode = reqxdebug.remote_port = 9000xdebug.remote_host = localhostxdebug.idekey = debug123 - Restart apache’a.
- Uruchamiamy skrypt testowy w linii komend (Win + r, cmd)
1php -r "$address = '127.0.0.1'; $port = 9000; $sock = socket_create(AF_INET, SOCK_STREAM, 0); socket_bind($sock, $address, $port) or die(\"Unable to bind\"); socket_listen($sock); echo \"\nSocket opened. Now start debug session.\"; $client = socket_accept($sock); echo \"\nConnection established: $client\"; socket_close($client); socket_close($sock);" - Następnie w przeglądarce wchodzimy na http://localhost/index.php?XDEBUG_SESSION_START=debug123
- lub na http://xampp.local/index.php?XDEBUG_SESSION_START=debug123 jeżeli korzystamy z domeny *.local opisanej w osobnym wpisie.
- Jeżeli w tym momencie w konsoli pojawi się poniższy napis, to Xdebug działa. Jeżeli nie, to może coś wcześniej nie zostało wykonane prawidłowo.
1Connection established: Resource id #5 - Jak widać w punkcie 7. aktywować Xdebuga można przez ustawienie w GET zmiennej XDEBUG_SESSION_START na wartość klucza ustawioną w php.ini (np. na użytą w tym wpisie debug123). Bardziej wygodną i łatwiejszą w zarządzaniu metodą jest ustawianie ciasteczka XDEBUG_SESSION; też na wartość debug123.
- Kiedy już Xdebug działa można przejść do przygotowania przeglądarki. Tak by łatwo można było dodawać i usuwać ciasteczko.
- Firefox. Możemy skorzystać z wtyczki The easiest Xdebug.
- W jej opcjach musimy ustawić IDE key for remote debugging na wartość debug123.
- U góry przeglądarki po prawej pojawią się 3 nowe ikony, z których pierwsza ustawia/usuwa ciasteczko.
- Chrome. Pomoże nam wtyczka Xdebug helper.
- W opcjach ustawiamy IDE key na Other i w polu które się pojawi wpisujemy debug123.
- Wtyczka dodaje ikonę (przedstawioną niżej). W rozwijanym menu mamy opcję Debug (do włączania) i Disable (do wyłączania).
- Firefox. Możemy skorzystać z wtyczki The easiest Xdebug.
- W programie Netbeans ustawiamy:
- W górnym menu: Tools > Options
- Potem w oknie: PHP > Debugging wpisujemy w polu Session ID wartość debug123.
- OK
- Następnie (zakładam, że macie już otwarty jakiś projekt):
- W górnym menu: File > Project Properties (<nazwa projektu>)
- W oknie (po lewej): Run Configuration
- Przycisk: New…
- W oknie dialogowym wpisujemy jakąś nazwę np. projektu. i OK
- Przycisk: Advanced…
- Wybieramy opcję Do Not Open Web Browser i OK
To moja osobista preferencja, bo korzystam z domen *.local i nie udało mi się na razie dobrze połączyć tych domen z opcjami debugera w Netbeansie.
- Wybieramy opcję Do Not Open Web Browser i OK
- OK
- W tym momencie wszystko mamy już przygotowane i możemy przejść do debugowania.
- W Netbeansie używamy skrótu <Ctrl> + <F5> (lub klikamy ikonkę przedstawioną niżej).
- W przeglądarce włączamy ciasteczko za pomocą opisanej w punkcie 10. wtyczki.
- Odświeżamy stronę w przeglądarce.
- Wracamy do Netbeansa i mamy tam już kod zatrzymany na pierwszej linii aplikacji – to zatrzymywanie na pierwszej linii jest konfigurowalne (Tools > Options > PHP >Debugging).
Samego sposobu debugowania nie uważam za konieczne opisywać – zakładam, że skoro ktoś już tu trafił, to wie o co w tym chodzi. Życzę owocnego debugowania!
Źródła i pomocne linki:
- https://netbeans.org/project_downloads/www/php/debug-setup-flowchart.pdf (kopia)
- https://blogs.oracle.com/netbeansphp/entry/howto_check_xdebug_installation
- http://stackoverflow.com/questions/17613726/netbeans-shows-waiting-for-connection-netbeans-xdebug
- http://devzone.zend.com/1120/introducing-xdebug/
- http://articlebin.michaelmilette.com/making-xdebug-work-with-netbeans-on-windows/
- http://wiki.netbeans.org/HowToConfigureXDebug#Overview
- https://netbeans.org/kb/docs/php/debugging.html#gettingReady