PHPStorm Xdebug (2 und 3)

PhpStorm IDE & Xdebug 2

Wie ermögliche ich einfaches Debuggen mit Xdebug und PhpStorm?

Zuerst legt man eine eigene php.ini (yourname.user.ini) in /etc/php/ an. Diese muss in allen installierten PHP Versionen verlinkt (z.B. /etc/php/7.4/apache2/conf.d/yourname.user.ini) sein. Bsw. für PHP 7.4 in der Konsole einen symbolischen Link auf unsere eigene php.ini machen:

sudo ln -s /etc/php/yourname.user.ini /etc/php/7.4/apache2/conf.d/yourname.user.ini

Xdebug Teil der yourname.user.ini:

[Xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=true
xdebug.remote_autostart=true
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM

Dann Xdebug installieren und den Server neu starten:

sudo apt install php-xdebug
sudo systemctl restart apache2

Jetzt ist Xdebug und PHP bereit um gemeinsam mit PhpStorm zu debuggen 🙂

PhpStorm Settings

In PhpStorm unter Settings => Languages & Frameworks => PHP => Debug sind die Einstellungen für das Debuggen. Außer den Einstellungen, an denen ich nichts ändern musste, gibt es eine Möglichkeit die Xdebug Server Konfiguration zu validieren …also, ob alles OK ist zum Debuggen mit PhpStorm.

PhpStorm debugging

In PhpStorm den Hörer (zwei rechts neben dem Käfer) klicken! Dank der Xdebug Einstellung xdebug.remote_autostart=1 kann man jeden PHP Request debuggen.

Xdebug 3.x

Auf der Xdebug Seite gibt es einen Upgrade Guide.

Xdebug: Step Debugging

Die PhpStorm Version muss mindestens 2020.3 sein.

Xdebug Teil meiner yourname.user.ini:

[Xdebug]
# zend_extension=xdebug.so # steht in der 20-xdebug.ini
# xdebug.mode=debug # xdebug 3.x - muss direkt in die 20-xdebug.ini | php.ini
xdebug.client_host=localhost # xdebug 3.x
xdebug.client_port=9003 # xdebug 3.x
xdebug.start_with_request=yes # xdebug 3.x
# xdebug.idekey=PHPSTORM # muss direkt in die 20-xdebug.ini | php.ini
# xdebug.discover_client_host=1 # muss direkt in die 20-xdebug.ini | php.ini

Eine Leerzeile am Ende, sonst: PHP: syntax error, unexpected TC_STRING in

Der xdebug.client_port (9003) muss auch in PhpStorm unter Settings => Languages & Frameworks => PHP => Debug gesetzt sein.

In PhpStorm unter Settings => Languages & Frameworks => PHP => Debug – und dort oben im Punkt eins „validate“ klicken. Da muss der richtige Pfad gesetzt sein (Laminas /public).

Ob der IDE Key gesetzt ist – mit phpinfo() gucken.

PhpStorm – Configure Xdebug

Das Browser Plugin XDebug muss den richtigen key (xdebug.idekey=PHPSTORM) konfiguriert haben.

Xdebug Log:
In die xdebug.ini:

xdebug.log="/home/allapow/xdebug.log"

…das File muss existieren und beschreibbar sein.

Die komplette xdebug.ini:

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.idekey=PHPSTORM
xdebug.log="/home/allapow/xdebug.log"
# xdebug.show_error_trace = 1
xdebug.discover_client_host=1 # important

WICHTIG als boolean Wert funktioniert „yes“ | „true“ nicht – stattdessen muss „1“ benutzt werden (siehe Code Beispiele).

CLI

Um CLI Programme zu debuggen, muss eine Linux Umgebungsvariable gesetzt sein:

export XDEBUG_SESSION=1

…siehe Xdebug Doku.

Wirklich funktionieren tut es mit (xdebug 2):

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

…siehe PhpStorm Hilfe.

In PHPStorm muss zusätzlich noch – wie immer beim Debuggen – der Käfer-Hörer geklickt werden.