Seite wählen

PHP Remote Debugging mit Xdebug

von | Nov 13, 2013 | Linux, Technology, Development, Virtualisierung, Betriebssysteme

Die Möglichkeit einfach mit einem grafischen Debugger durch den Code wandern zu können, erleichtert das Finden von Bugs oft extrem. Leider unterstützt PHP von sich aus kein Debugging und man muss deswegen auf Erweiterungen wie zum Beispiel Xdebug zurückgreifen. Wenn man es richtig konfiguriert, ist damit allerdings sogar das Debuggen von entfernten Servern oder VMs möglich, was es zu einem sehr nützlichen Tool bei der Fehlersuche macht. In diesem Blogpost will ich euch deswegen kurz erklären wie man Xdebug einrichtet:

Einrichten des Webservers

Zuerst muss das Modul Xdebug installiert und das Debugging in der php.ini aktiviert sein. Der Eintrag zend_extension sollte immer auf die xdebug.so zeigen und aktiviert die Erweiterung. Die restlichen Einstellungen erlauben dann das eigentliche Debugging von allen verfügbaren Hosts aus. Wer in einer unsicheren Umgebung arbeitet, sollte sich allerdings die Mühe machen und das Debugging nur für bestimmte Hosts aktivieren. Welche Einstellungen dafür nötig sind wird genauer in der Dokumentation beschrieben.

zend_extension = /usr/lib/php/modules/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_autostart = 1
Remote Debugging in der IDE aktivieren

Das Debugging muss auch in der IDE erst aktiviert werden, da die Debug-Sessions vom Server initiiert werden und die IDE deswegen immer auf eingehende Verbindungen warten muss. In PhpStorm muss man dazu zum Beispiel die Adresse des Webservers in Settings->Server anlegen und dann das Remote Debugging mit Run->Start Listen PHP Debug Connections aktivieren.

Breakpoints setzen

Jetzt ist auch schon alles fertig eingerichtet und es müssen nur noch Breakpoints gesetzt werden. Wenn auf dem Webserver eine Seite geöffnet wird die einen Breakpoint auslöst, wird die IDE an diese Stelle im Code springen und man kann die Anwendung in einer vertrauten Umgebung debuggen.

Fehlersuche

Falls es nicht gleich funktionieren sollte, kann man mit dem Befehl php -i alle momentan aktiven Einstellungen überprüfen. Wenn die Optionen für Xdebug überhaupt nicht auftauchen, ist das ein Zeichen dafür, dass das Modul nicht geladen wurde. Wenn die Optionen sich von den eben gesetzten unterscheiden, kann das daran liegen dass noch eine andere Konfiguration die Einstellungen wieder überschreibt. In diesem Fall sollte man überprüfen ob nicht noch eine anderen Konfiguration neben der php.ini existiert, die die Einstellungen überschreibt.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kibana Sicherheits-Updates: CVSS:Critical

Und täglich grüßt das Murmeltier. Nein nicht ganz. Heute ist es  aus der Elastic Stack Werkzeugkiste Kibana, für das es ein wichtiges Sicherheits-Update gibt. Es besteht auf jeden Fall Handlungsbedarf! IMHO auch wenn ihr die "Reporting" Funktion deaktiviert habt. Der...