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: 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: 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):
- easy Xdebu für FireFox (https://addons.mozilla.org/de/firefox/addon/easy-xdebug/)
- Xdebug helper für Google Chrome (https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc)
- Xdebug für Opera (https://addons.opera.com/de/extensions/details/xdebug)
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.