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.
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.
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.