X

Перестал работать Xdebug 2020

Столкнулся с тем, что у меня перестал работать Xdebug. Удивило меня то, что я не вносил никаких изменений в конфигурацию как xdebug-а, так и IDE. Дело оказалось в том, что  xdebug обновился на новую версию, во время очередного общего апдейта пакетов. И эта конфигурация старой, второй версии не совместима с новой, теретей..

Xdebug обновился до третьей версии, в которой произошли изменения в опциях конфигурации.

Проверить вашу версию можно так

# php -v
PHP 7.4.13 (cli) (built: Nov 28 2020 06:24:59) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies
with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans

А вот ссылки на официальный источник

  • Анонс этого обновления: https://xdebug.org/announcements/2020-11-25
  • Инструкция по миграции: https://xdebug.org/docs/upgrade_guide
  • Описание опций: https://xdebug.org/docs/all_settings

Ключевые опции которые помянелись в моей конфигурации

  • Нужно указывать режим работы, инструкцией "xdebug.mode"
  • Порт по-умолчанию поменялся с 9000 на 9003
  • "xdebug.remote_host" заменен на "xdebug.client_host"
  • "xdebug.remote_port" заменен на "xdebug.client_port"
  • "xdebug.remote_autostart" заменен на "xdebug.start_with_request=yes"

Итого конфиг для php-fpm

xdebug.mode=develop,debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.idekey=PHPSTORM
xdebug.scream=1
xdebug.force_display_errors=1
xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE
xdebug.file_link_format="phpstorm://open?file=%f&line=%l"
#xdebug.xdebug_log="/tmp/xdebug.log"
#xdebug.output_dir="/work/progr/webnmp/xdebug/profiling/php7.4"

Конфиг для php-cli

xdebug.mode=develop,debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.idekey=PHPSTORM
xdebug.start_with_request=yes
xdebug.scream=1
xdebug.force_display_errors=1
xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE
xdebug.file_link_format="phpstorm://open?file=%f&line=%l"
#xdebug.xdebug_log="/tmp/xdebug.log"
#xdebug.output_dir="/work/progr/webnmp/xdebug/profiling/php7.4"

В PHPStorm возможно понадобится поменять порт с 9000 на 9003 в настройках
File > Settings > Languages & Frameworks > PHP > Debug > Xdebug > Port

Еще одна особенноеть, при использовании XDebug в консоли и выключенном прослушивании в PHPStorm, в консоли появляются ошибки

  • Xdebug: [Step Debug] Could not connect to debugging client. Tried: 127.0.0.1:9003 (through xdebug.client_host/xdebug.client_port)

Чтобы их отключить нужно установить log_level = 0, т.е. добавить вот это

xdebug.log_level=0
#xdebug.xdebug_log="/tmp/xdebug.log"

не забудьте только вренуть обратно, если понадобится дебажить соединение с IDE

Категории: PHP Бездна