Archiv für PhpStorm

PHP Remote Debugging mit XDebug

PHP Remote Debugging mit XDebug

Serverseitige Konfiguration

Schritt 1: XDebug installieren

apt-get install php5-xdebug

Schritt 2: php.ini / xdebug.ini editieren
zend_extension      = /usr/lib/php5/20090626/xdebug.so
xdebug.remote_enable = On
xdebug.remote_port   = 9000
xdebug.remote_log    = <Pfad zur log-Datei auf dem Server>
xdebug.remote_host   = <IP auf dem die IDE laufen soll>

Den richtigen Pfad zur zend_extension kann der erzeugten xdebug.ini aus /etc/php5/conf.d/ entnommen werden. Diese Datei lässt sich nun auch mit den oben beschriebenen Einträgen erweitern.

Werden die php.ini’s durch Froxlor pro Seite verwaltet, können die Einstellungen natürlich auch dort vorgenommen werden. Aber denk dran: Froxlor übernimmt die Einstellungen per Cronjob. Ein Server Neustart bringt an der Stelle also nichts, um mal eben schnell die Einstellungen zu testen.

Soll das Remote Debugging nicht nur für einen einzelnen Benutzer zugänglich sein (remote_host), sondern auch für mehrere, benötigt ihr noch folgenden Eintrag in der .ini:

xdebug.remote_connect_back = On

Der remote_host wird dann ignoriert und es werden alle Hosts zugelassen (Achtung: Sicherheit!)

Schritt 3: Port-Freigabe am Router

Etwas das ich sehr gerne vergesse und erst viel zu spät dran denke: Den verdammten Port (hier: 9000/tcp) beim Router freigeben und auf den Rechner mit der IDE weiterzuleiten.

Debugging

Im Browser

Um das Debugging im Browser zu aktivieren, empfiehlt sich ein Plugin/Addon für den jeweilig benutzten Browser zu installieren. Für Firefox z.B. das  Addon “The easiest Xdebug“. Um nun eine Debug-Session zu ermöglichen, muss der kleine grüne Käfer des Addons in der Toolbar angeklickt werden.

In der IDE

In der Toolbar von beispielsweise PhpStorm, befindet sich ein kleiner Telefonhörer, wenn dieser aktiviert wird, oder der längere Weg über Run -> Start Listening for PHP Debug Connections gewählt wird, horcht die IDE auf den eingestellen Port (Standard wieder 9000) und hält an den Breakpoints an, wenn diese über den Browser getriggert werden.

Hilfreiche Quellen

* http://xdebug.org/docs/remote
* http://mimi.kaktusteam.de/blog-posts/2012/01/remote-debugging-mit-phpstorm-und-xdebug/

https://www.youtube.com/watch?v=LUTolQw8K9A