CLI remote Debugging mit PhpStorm

Vorab sollte gesagt sein, dass PhpStorm es dem Entwickler sehr einfach macht remote Debugging zu konfigurieren. Für den größten Teil des Debugging Bedarfs stimmt das auch.

Außer der Installation von xdebug und dessen Konfiguration muss eigentlich nur noch der Ide Key und der Server in den PHP Remote Debug Settings eingestellt werden. Sollte man mit einem Framework wie TYPO3 arbeiten ist dann nur noch darauf zu achten, dass das Mapping im Bereich Server passend eingestellt wird.

Anders sieht die Lage beim Debuggen von CLI Scripten aus. So lange der Entwicklungsserver auf der gleichen Maschine eingerichtet ist die auch als Workstation dient ist das Problem relativ einfach erledigt, denn da bietet PhpStorm den Bereich PHP Script und den zu konfigurieren ist recht übersichtlich.

Nur lässt sich darüber kein CLI Script auf einem Server anstoßen. Doch selbst das ist möglich. Funktioniert das Debuggen via Browser einmal muss an PhpStorm selber nichts mehr eingestellt werden. Lediglich die xdebug.ini braucht eine kleine Änderung und der Aufruf auf der Shell ist ein wenig verwirrend.

Zunächst erst einmal die xdebug Settings die bei mir funktionieren.

xdebug Settings

zend_extension = /usr/lib/php5/20090626/xdebug.so

[debug]
xdebug.idekey = PHPSTORM
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.max_nesting_level = 200

Erläuterung der Zeilen

zend_extension wird bei Installation von xdebug automatisch eingefügt

xdebug.idekey sollte für PhpStorm auf 'PHPSTORM' gesetzt werden entsprechend muss Ide key auch auf den gleichen Wert gesetzt werden

xdebug.remote_enable muss auf 1 gesetzt werden damit debugging überhaupt möglich wird

xdebug.remote_connect_back wird benötigt damit von verschiedenen Workstations das remote Debugging möglich ist. Es ermöglicht aber nicht das zeitgleiche Debuggen von mehreren Rechnern aus.

xdebug.max_nesting_level muss nicht zwingend auf 200 erhöht werden. Beim Arbeiten mit fluid und extbase in TYPO3 ist es aber anzuraten.

CLI Script Aufruf

export PHP_IDE_CONFIG="serverName=www.cp-registrierung.de.dev.local"; \
	export TYPO3_CONTEXT="Production/Staging"; \
	/usr/bin/php \
	-dxdebug.remote_autostart=1 \
	-dxdebug.remote_enable=1 \
	-dxdebug.remote_host=192.168.20.37 \
	/home/www/cp-registrierung/www/vendor/bin/typo3 evoweb:folder:fixstructure

Erklärung des Aufrufs

export PHP_IDE_CONFIG=serverName=dev62.dev; setzt den Parameter serverName im Bereich $_SERVER['PHP_IDE_CONFIG']. An hand dessen ermittelt Phpstorm welche Server Konfiguration verwendet werden soll.

php -dxdebug.remote_autostart=1 -dxdebug.remote_host=192.168.0.116 setzt zum einen die IP der Workstation auf der debuggt werden soll und zum anderen wird das Debugging automatisch gestartet. Das ist wichtig, da anders als im Browser kein Debugging Cookie gesetzt werden kann.

./typo3/cli_dispatch.phpsh scheduler ist ein beliebiges CLI Script das auf der Shell ausführt werden soll. In diesem Fall wird der TYPO3 Cli Dispatcher angewiesen das Scheduler CLI Script auszuführen. Damit werden dann alle aktiven Scheduler Task mit den Rechten des cli_scheduler Users abgearbeitet.

Meine Mission

Ziel meiner Veröffentlichungen ist es, meine Begeisterung für die Programmierung und das über die Jahre gewonnene Wissen mit anderen Entwicklern zu teilen. Dabei ist es mir wichtig, Lösungen zu thematisieren für die ich in Suchmaschinen keine Antworten finden konnte. Außerdem versuche ich die von mir veröffentlichten Extensions an Beispielen zu erläutern.

evoWeb © 2019