Einrichten von XDebug mit PHPStorm und Valet Development Umgebung

Vorbereitung:

  1. Homebrew sollte installiert sein
  2. Valet sollte installiert sein und laufen: https://laravel.com/docs/7.x/valet
  3. Browser Extension für PHPSTORM sollte installiert sein: https://www.jetbrains.com/help/phpstorm/browser-debugging-extensions.html
gerry@webgarten ~ % brew install pecl
gerry@webgarten ~ % pecl install xdebug

Bei Fehlermeldung:
Warning: mkdir(): File exists in System.php on line 294
PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/7.4.7/share/php/pear/System.php on line 294
Warning: mkdir(): File exists in /usr/local/Cellar/php/7.4.7/share/php/pear/System.php on line 294
ERROR: failed to mkdir /usr/local/Cellar/php/7.4.7/pecl/20190902
Abhilfe:
gerry@webgarten ~ % mkdir -p /usr/local/lib/php/pecl
gerry@webgarten ~ % pecl install xdebug
Installing '/usr/local/Cellar/php/7.4.7/pecl/20190902/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.9.6
Extension xdebug enabled in php.ini

gerry@webgarten ~ % valet restart
gerry@webgarten ~ % php -m | grep xdebug

[nothing found]

Abhilfe: Zu PHP.ini hinzufügen, dazu erstmal PHP.ini finden:

gerry@webgarten ~ % php --ini
configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File: /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.4/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
gerry@webgarten ~ % subl /usr/local/etc/php/7.4/php.ini

Wir benutzen Sublime, jeder andere Texteditor tut es auch. Einfügen in PHP.ini:
zend_extension="xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1

Execution Time kann man in der php.ini gleich mit anpassen, um frühen Timeout (504) von Nginx beim Debuggen zu verhindern:
max_execution_time = [Anzahl_in_Sekunden] zB 1800

php.ini speichern und los:
gerry@webgarten ~ % valet restart

Happy Debugging!

 

Siehe auch

Weitere Techdoks und Snippets