PhpStorm XDebug: Schnell PHP-Fehler finden

21. Februar 2014 · Kategorien: Internet, PHP, Webentwicklung

Php XDebug Chrome

In diesem Artikel wird dir nicht nur erklärt, wie Du in PhpStorm XDebug einrichtest, sondern auch, wie Du auf schnelle Weise Fehler in deinem PHP-Code findest.

Poor Man’s Debugging mit echo und die()

Wie geht man vor, wenn der soeben geschriebene Code nicht richtig funktioniert?
Eine Möglichkeit ist es selbstverständlich, nach und nach die betreffenden Variablen und Methodenrückgabewerte im Browser ausgeben zu lassen. Direkt nach der Ausgabe erfolgt meist ein exit() oder die(), sodass nachfolgender Code und damit folgende Ausgaben nicht stören.
Dieser Weg führt zum Ziel, ist aber nicht selten äußerst zeitaufwändig. Da ein Großteil der Entwicklungsdauer für das Finden von Fehlern benötigt wird, sollte man an dieser Stelle möglichst effizient arbeiten.
Eine weit verbreitete Möglichkeit, das Debuggen zu beschleunigen, ist die Verwendung von XDebug. Da PhpStorm eine gerne genutzte IDE zur Entwicklung von PHP-Scripts ist, erkläre ich am Beispiel, wie man in PhpStorm XDebug einrichtet.

XDebug installieren

XDebug ist eine Erweiterung für PHP, die das Debuggen ermöglicht. Sobald installiert, klingt es sich bei der Ausführung von PHP-Scripts ein, merkt sich Variablen, deren Werte sowie Methodenaufrufe des ausgeführten Scripts und macht es möglich, das Script während seiner Ausführung anzuhalten, um die gemerkten Werte anzuzeigen.

Um XDebug zu installieren, ist sowohl in Ubuntu als auch Mac OS X folgender Befehl notwendig:

sudo pecl install xdebug

Sollte unter Ubuntu pecl nicht gefunden werden, müssen die folgende Pakete installiert werden.

sudo apt-get install php-pear php5-dev libcurl3-openssl-dev

Während der Installation von XDebug wird euch der Pfad zu der Datei xdebug.so angezeigt. Sollte das nicht der Fall sein, kannst Du auch einfach nach der Datei suchen. Aktualisiert dazu zuvor euren Filecache.

File Cache updaten in Ubuntu

sudo updatedb

File Cache updaten in Mac OS X

sudo /usr/libexec/locate.updatedb

Das kann ein paar Sekunden dauern – . Sobald die Aktion ausgeführt wurde, kannst Du sowohl in Ubuntu als auch Mac OS X mit folgendem Befehl nach der PHP-Erweiterung XDebug suchen:

locate xdebug.so

Nun zeigt dir das Terminal nach kurzer Zeit den Pfad an. Auf meinem Mac zum Beispiel lautet er:

/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so

Aber das kann sich von System zu System unterscheiden.

Öffne nun mit root-Rechten Deine php.ini. Auch diese Datei kannst Du wieder mit locate suchen.
Erweitere diese Datei am Ende mit folgenden Zeilen.
Achte darauf, dass Du in der ersten Zeile den soeben ermittelten Pfad richtig angibst.

zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so

xdebug.remote_enable=On
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

Starte nun Deinen Webserver neu. Sofern Du apache2 installiert hast, funktioniert das folgendermaßen.

Apache unter Ubuntu neustarten

sudo service apache2 restart

Apache unter Mac OS X neustarten

sudo apachectl restart

XDebug in Chrome einrichten

Eine Addon für XDebug gibt es für nahezu jeden Browser. Ich persönlich nutze den XDebug Helper. Nachdem Du das Plugin installiert hast, siehst Du einen kleinen Käfer rechts in der Adresszeile:

XDebug Helper Chrome

Klicke mit der rechten Maustaste auf das Icon und wähle Optionen. Wähle unter IDE Key “Others” und gib im Textfeld rechts daneben PHPSTORM ein:

PhpStorm XDebug Helper

PhpStorm XDebug einrichten

Öffne zunächst das Projekt in PhpStorm, welches Du debuggen möchtest.
Klicke darauf oben in der Menüzeile auf Run und dann auf Edit Configurations…. Klicke oben links auf das + und wähle PHP Remote Debug:

PhpStorm Remote Debug

Gib nun in der rechten Seite einen Namen ein, zum Beispiel XDebug Chrome. Unter “Ide key(session id)” musst Du PHPSTORM eingeben:

PhpStorm XDebug

Klicke auf den Button [...] neben Servers, gib dort einen Namen ein (zum Beispiel der Name deines Projekts). Unter Host wählst Du die URL zu deiner Webseite, den Port setzt Du auf 80. Als Debugger wählst Du XDebug:

PhpStorm XDebug Server

Klicke auf OK, wähle den Server aus und klicke erneut auf OK.

PhpStorm XDebug Chrome: Debuggen

Jetzt, da alles eingerichtet ist, kannst Du mittels XDebug debuggen.

Suche eine Stelle in Deinem PHP-Code, von der du weißt, dass Sie ausgeführt wird. Setze dort einen Breakpoint, indem Du links neben der Zeile in die Seitenleiste klickst. Dort erscheint nun ein roter Punkt. Beachte, dass es sich um keine Leerzeile handeln darf..

PhpStorm Breakpoint

Klicke erneut in der Menüleiste auf Run, dann auf den ersten Eintrag Run Name.

Wechsle nun zu Chrome, öffne die URL deiner Seite und aktiviere mit einem Linksklick auf das Käfer-Icon und dann auf Debug das Debugging.

XDebug Helper Debug

Lade die Seite nun neu. Diesmal wird nicht die gesamte Webseite geladen, sondern PhpStorm wird in den Vordergrund gerückt.
Mit Hilfe von PhpStorm zeigt Dir XDebug nun, wie der aktuelle Schnappschnuss deiner Variablen sowie der Stacktrace aussieht. Du kannst Arrays und Objekte aufklappen, um detaillierte Informationen zu erhalten. Mit dem grünen Pfeil auf der Linken Seite kannst Du zum nächsten Breakpoint oder – wenn kein weiterer Breakpoint gesetzt – zum Ende des Scripts springen. Die Webseite wird dann in Chrome zu Ende geladen.

PhpStorm

Wenn Du Fragen hast oder etwas nicht wie gewünscht funktioniert, kannst Du gerne ein Kommentar schreiben.

Autor: | Kategorien: Internet, PHP, Webentwicklung

2 Kommentare zu PhpStorm XDebug: Schnell PHP-Fehler finden

  1. Game-Reset sagt:

    Kennst du auch eine Software-Alternative für Windows-Client Rechner? Aktuell nutze ich Notepad++

    • Christian Kilb sagt:

      Hallo,
      PHPStorm läuft auch auf Windows. Genauso wie Netbeans und Eclipse. Zwar sind IDEs langsamer, aber durch die Code-Vervollständigungen und Jump To Definitions spart man eine Menge Zeit.

Hinterlasse eine Antwort

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