Ubuntu, PhpStorm und Xdebug

Aus Contao Community Documentation

Dieses Thema hat nur am Rande mit Contao zu tun, da es aber sehr bei der Entwicklung für Contao hilft, wurde diese Anleitung geschrieben. Wenn man Xdebug aus den Ubuntuquellen installiert, wird die Verbindung oft nach 10 Sekunden beendet.

Achtung.png Achtung: Leider hat Xdebug in der Version kleiner 2.1 einen Fehler, der zum Abbruch der Debug-Verbindung nach ca. 10 Sekunden führt.

Die alte Version kann man mittels sudo apt-get remove php5-xdebug entfernen. Um die aktuelle Version erstellen zu können, braucht man noch das Paket php5-dev. Dies kann einfach aus den Ubuntuquellen mit sudo apt-get install php5-dev installiert werden.

Im Internet gibt es diese Anleitung, um eine funktionierende Version von Xdebug zu installieren:

mkdir /tmp/xdebug
cd /tmp/xdebug
wget http://xdebug.org/files/xdebug-2.1.0.tgz
tar -xvzf xdebug-2.1.0.tgz
cd xdebug-2.1.0
phpize

Die Ausgabe sollte in etwa so aussehen:

Configuring for:
...
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

Weiter gehts mit:

./configure
make
sudo cp modules/xdebug.so /usr/lib/php5/20090626

Nun muss noch die PHP-Konfiguration angepasst werden. Dies kann in der /etc/php5/apache2/php.ini oder der /etc/php5/conf.d/xdebug.ini geschehen. Hier werden alle Xdebug-Einstellungen in der xdebug.ini gesammelt. Dort sind nun folgende Einträge hinterlegt:

[xdebug] 
zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.profiler_output_dir = "/tmp/xdebug"
xdebug.trace_output_dir = "/tmp/xdebug"
xdebug.remote_enable=1 
xdebug.remote_port=9000
xdebug.remote_host=192.168.0.xxx 
xdebug.remote_handler=dbgp

Die IP-Adresse muss in der Zeile xdebug.remote_host=192.168.0.xxx natürlich angepasst werden. Wenn der Server und PhpStorm auf dem selben Rechner laufen, kann hier einfach localhost eingetragen werden. In PhpStorm wird nur der Debug-Port (9000) unter Project Settings->PHP->Debug->DBGp Proxy angegeben.

Hinweis.png Hinweis: PhpStorm verwendet als Defaultport 9001. Auf diesem kommt manchmal keine Verbindung zustande. Deshalb wird hier der Port 9000 verwendet. Man muss evtl. etwas experimentieren.

Nun kann durch einen Klick auf den roten Telefonhörer auf eingehende Debugverbindungen auf Port 9000 gelauscht werden. Alternativ kann man auch im Menü auf Run->Start Listen PHP Debug Connections geklickt werden.

Im Browser Eurer Wahl muss nun der Debug-Helper aktiviert werden. Zu konfigurieren gibt es da in der Regel nicht viel. Hier eine kleine Liste mit Debug-Tools für die gängigsten Browser (die Liste erhebt keinen Anspruch auf Vollständigkeit):

Wird nun durch klicken auf den linken Rand (rechts neben den Zeilennummern, in PhpStorm) ein Breakpoint gesetzt, hält die Verarbeitung dort an und man kann die Variablen usw. prüfen und alles tun, was ein Debugger so schönes möglich macht. Eine Anleitung zum Debuggen würde den Rahmen an dieser Stelle leider sprengen.

Debug mit mehreren Hosts

Will man von mehr als einem Host eine Verbindung zum Debugger aufbauen, ist das gezeigte Setting ungeeignet. Da in der xdebug.ini die IP des Debug-Hosts fest eingestellt ist. Man müsste jedes Mal die Datei ändern, wenn man den Rechner wechselt. Deshalb ist es sinnvoller in diesem Fall xdebug.remote_host=192.168.0.xxx und xdebug.remote_handler=dbgp wegzulassen oder mit einem Simikolon (;) auszukommentieren. Dafür müssen dann die folgenden Direktiven eingefügt werden xdebug.idekey=PhpStorm und xdebug.remote_connect_back=1. Die xdebug.ini sollte dann so aussehen:

[xdebug] 
zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.profiler_output_dir = "/tmp/xdebug"
xdebug.trace_output_dir = "/tmp/xdebug"
xdebug.remote_enable=1 
xdebug.remote_port=9000 
 
;xdebug.remote_handler=dbgp 
;xdebug.remote_host=192.168.0.xxx
 
xdebug.idekey=PhpStrom
xdebug.remote_connect_back=1

Nun muss in PhpStorm unter Project Settings->PHP->Debug->DBGp Proxy->IDE key der Wert von xdebug.idekey eingetragen werden. Also in diesem Fall PhpStorm. Das Gleiche muss auch in den Einstellungen des Debug-Tools des Browsers (z.B. Xdebug helper) eingetragen werden. Nun sollte man von jedem Rechner, bei dem PhpStorm und das Browser-Tool richtig konfiguriert sind eine Debug-Verbindung aufbauen können.

Das Original dieses Artikels ist auf easySolutionsIT.de erschienen.

Ansichten
Meine Werkzeuge

Contao Community Documentation

Toflar hat mich gestern entjungfert! ... er hat meinen ersten PR gemerged.

Kim Wormer
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge