WP-CLI-Scripte mit PhpStorm debuggen

PhpStorm hat seit Anfang 2017 nun auch Docker-Support mit an Board. Anscheinend hat das jedoch nicht richtig funktioniert, weshalb das Tool nun wieder ohne Docker läuft. Gut so, denn so lassen sich CLI-Scripte nun (wieder) etwas leichter debuggen. Hier steht, wie’s funktioniert.

Meine Entwicklungsumgebung

Ich nutze seit Mitte 2016 Local als WordPress-Entwicklungsumgebung. Vormals hieß die App “Local by Flywheel” und “Pressmatics”. Damit lassen sich sehr einfach und schnell neue WordPress-Seiten als Docker-Container starten.

Konfiguration von XDEBUG 2.x und PHP 7.x:

Die Lösung ist denkbar einfach. Man muss lediglich

export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_port=9000 remote_host=192.168.5.41 remote_connect_back=0"

in der Konsole eingeben bevor man die WP-CLI bemüht. Wer will, kann noch remote_host=127.0.0.1 dazwischen hängen.

Konfiguration von PhpStorm

Nun muss nur noch PhpStorm richtig konfiguriert werden. Und das geht über Run > Webserver Debug Validation. Im neuen Fenster wählt man “Remote Web Server” aus und fügt dann die neue Seite.

Danach muss man lediglich noch unter Run > Start Listening for PHP Debug Connections auswählen und das war’s.

In der Konsole sollte man dann noch den “Server Namen” eingeben, der in PhpStorm hinterlegt wurde.

export PHP_IDE_CONFIG="serverName=meineseite.dev"

übergeben, wobei meinseite.dev mit dem Namen des Remote Web Servers ersetzt werden sollte.

Noch einfacher: Über die Bash oder SH-Script

Noch einfacher geht’s über einen eigenen Bash-Befehl, den man in die bash_profile-Datei einfügt: Gefunden hier.

Oder man baut sich ein eigenes Shell-Script und legt es im Docker-Container unter /usr/local/bin/wpd ab:

#!/bin/sh
export XDEBUG_CONFIG="remote_host=192.168.5.41"
export PHP_IDE_CONFIG="serverName=meinesete.dev"
wp --allow-root "$@"
unset XDEBUG_CONFIG
unset PHP_IDE_CONFIG

Konfiguration von XDEBUG 3.x und PHP 8.x:

Mit PHP 8 und höher sowie XDEBUG 3 geht das ganze etwas anders. Hier sieht die php.ini-Datei schon ganz anders aus:

xdebug.mode=debug
xdebug.client_port="9003"
xdebug.start_with_request=trigger
xdebug.discover_client_host=1
xdebug.idekey=PHPSTORM

In der Konsole wird folgendes eingegeben:

export XDEBUG_SESSION=1

export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_host=127.0.0.1 remote_port=9003 remote_connect_back=0"

Das war’s! 😉