Tel. 06151 / 39 10 793

Debugging in PHP mit XDebug

20.01.2009  • Manuel Pistner 1

Xdebug mit Eclipse installieren ist das heutige Thema des folgende Blogbeitrages. Da man sich als PHPler immer wieder mit den Problemen einer typischen Scriptsprache herumärgern muss, haben wir uns nun auch mal an den Versuch gewagt, einen PHP Debugger zu installieren. Die Wahl fiel dabei auf XDebug. Dieser Debugger erfordert eine Installation von XDebug auf dem Apache Server. Zum Entwickeln selbst verwenden wir Eclipse. Eine Ausführliche Dokumentation findet man direkt auf XDebug.

Anmerkung: Der Nachteil an XDebug ist, dass es unter Windows Vista nicht richtig funktioniert (zumindest bei uns nicht) und dass man, wenn man es auf einem Linux-Entwicklungsserver betreibt, nur von einem Client aus debuggen kann.

Zunächst sollte man das PHP Developer Tools Framework PDT installieren, welches  prinzipiell ein Eclipse Plugin ist. Damit hat man zunächst einmal alle Voraussetzungen um mit Eclipse PHP zu entwicklen. Dann macht man sich zunächst an die Installation des Apachemoduls XDebug. Ich persönlich verwende einen Linuxserver, die Installation verläuft aber analog wenn man zum Beispiel XAMPP unter Windows verwendet. Der Unterschied ist lediglich die eigentliche Moduldatei von XDebug (in Windows eine DLL als Modul für den Apache, in Linux eine .so Datei)

XDebug installieren und in PHP einrichten

XDebug unter Linux installieren:
pecl install xdebug im Root eingeben und bestätigen (bei anderen Linux Distributionen muss evtl. "apt" oder ähnliches benutzt werden).

XDebug unter Windows installieren:
http://pecl4win.php.net/ext.php/php_xdebug.dll herunterladen und in das Extension Verzeichnis der PHP-Installation kopieren (meist php5\ext\php_xdebug.dll)

Datei php.ini anpassen: (ANMERKUNG: Man könnte auf die Idee kommen und die XDebug Extension als extension=xdebug.so oder extension=xdebug.dll zu installieren. Das funktioniert nicht, da XDebug als Zend_extension installiert werden muss -> ACHTUNG: Es darf nur einmal die Anweisung "zend_extension=" in der php.ini geben!)

Unter XAMPP trägt man in die php.ini folgendes ein:
zend_extension_ts="PHP_PFAD\ext\php_xdebug.dll" (bzw. zend_extension="PHP_PFAD\ext\php_xdebug.dll").
ACHTUNG: unter XAMPP gibt es verwirrender Weise mehrere php.ini Dateien. Um sicher zu stellen, dass man mit der richtigen Arbeitet, unbedingt mit phpinfo(); prüfen, ob das Einbinden erfolgreich war!

Unter Linux passiert das ganze mit folgendem Befehl in der php.ini:
<span style="font-family: Arial,Verdana,sans-serif;"><br>zend_extension=/usr/lib/php5/20060613/xdebug.so<br><br>[xdebug]<br>xdebug.remote_enable=1<br>xdebug.remote_handler=dbgp<br>xdebug.remote_mode=req<br>xdebug.remote_port=9000<br>xdebug.remote_host=192.168.82.104<br>xdebug.remote_log=/var/log/apache/xdebug_remote<br></span>

Anmerkung: Scheinbar kann man mit xdebug.remote_host nur mit einem Host gleichzeitig debuggen, zumindest habe ich in der Doku keine weitere Erklärung gefunden, wie man das mehrern Hosts gestattet (bei einer lokalen XAMPP Installation ist das Problem von Natur aus nicht vorhande)

Nachdem alle Einstellungen vorgenommen sind, wird der Apache neu gestartet (nicht reload!)
Zur Kontrolle fürhren wir ein PHP Script aus, das uns mit dem Befehl phpinfo(); anzeigt ob unsere Arbeit Früchte getragen hat. Hier sollte bereits oben unter dem Zend logo der Eintrag "Xdebug v2.0.4" zu finden sein (evtl nach xdebug suchen). Hat das geklappt, wenden wir uns der Eclipse-Seite zu.

Eclipse für die Verwendung mit XDebug konfigurieren

Nachdem man PDT/Eclipse installiert hat, sollte man ein neues Projekt erstellen. In unserem Fall liegen die Projekte auf einem Server hier im Büro und sind als Laufwerke gemappt. In den meisten Fällen wird das Projekt in einem lokalen Verzeichnis in ihrer Apache Installation liegen.

Man wählt also File->New->PHP Project und legt entweder ein neues Projekt an oder importiert ein bestehendes.

Danach geht es an die Einstellungen. Zuerst muss der PHP-Server des Projektes angelegt werden. Hierzu geht man unter Window->Preferences und dort dann unter PHP->PHP Servers. Hier ändert man den voreingestellten Server oder fügt einen neuen hinzu. In den meisten Fällen wird die benötigte URL http://localhost sein, in unserer Umgebung ist es der URL-Alias des Zielprojektes. Bestätigen Sie die Änderungen mit OK.

Einstellungen im Preferences Menü

Als nächstes muss das Projekt fürs Debugging konfiguriert werden. Dazu müssen unter Run->Debug Configurations einige Einstellungen vorgenommen werden. Zuerst muss im Punkt PHP Web page eine neue Konfiguration hinzugefügt werden, indem man auf den New Launch configuration Button klickt.

Hier vergibt man nun einen Namen, stellt den Debugger auf "XDebug" und wählt den vorher eingetragenen PHP-Server aus. Unter "File" wählt man die Datei die als erstes vom eingestellten Projekt geladen wird, in unserem Falle ist dies die index.php. URL auto generate deaktiviert man am besten (hier auf "/" eingestellt).

Einstellungen unter Debug Configurations

Jetzt der Probelauf. Bei druck auf "F11" sollte sich der Browser öffnen und die Seite anzeigen, in der URL sollte ein von Eclipse angehägter Term zum starten des Debuggers sein. Sollte ein falscher Browser aufgerufen werden, kann man diesen unter Preferences->General->Web Browsers umstellen. Sofern alles funktioniert kann man jetzt innerhalb seines Projektes - wie von anderen IDEs gewohnt - Breakpoints setzen, Variablen beobachten und den Callstack betrachten.
 

weitere Quellen: thierryb, codings.org 

Programmierung

Nur eine Anmerkung zu XAMPP-Teil: Mittlerweile (Version 1.7.7) ist es möglich ohne externe DLL xdebug zu aktivieren. Einfach in der php.ini beim Abschnitt XDebug die eine Zeile einkommentieren.

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Suchen


Newsletter

Melden Sie sich zu unserem kostenlosen Newsletter an. Wir informieren Sie regelmässig über unsere Leistungsangebote, Drupal Best-Practices, Mobile Apps, ERPAL Updates und Veranstaltungen.

Unsere Partner
comm-press comm-press
Drupal Spezialisten aus Hamburg
neosmart - Digital Media, Webdesign & Webentwicklung<br />
aus Darmstadt neosmart
Digital Media, Webdesign & Webentwicklung aus Darmstadt
trinomica - Software Solutions trinomica
Software Solutions
Sponsoring und Mitgliedschaften

Drupal Initiative Deutschland - Firmen-Mitglied

Wir sind Diamant Sponsors für das DrupalCamp Frankfurt 2014

So finden Sie uns