Я использовал действительно старую версию Homestead 2.0 с PHP 7.0 и включенным Xdebug. Когда я обновил до Homestead 7.0.1, который поддерживает несколько версий PHP, работающих одновременно, Xdebug прекратил подключаться к PhpStorm 2017.
Конфигурация в PhpStorm такая же, как и до обновления Homestead.
Я скопировал свой оригинал xdebug.ini
в новый PHP 7.1 INI для Xdebug. Вот мой текущий конфиг:
zend_extension=xdebug.so
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = 10
xdebug.default_enable = 0
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 0
xdebug.remote_handler = dbgp
xdebug.idekey = PHPSTORM
xdebug.collect_return = 1
xdebug.collect_params = 10
xdebug.show_mem_delta = 1
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "/home/vagrant/Projects/xdebug_profiler"xdebug.trace_enable_trigger = 1
xdebug.trace_output_dir = "/home/vagrant/Projects/xdebug_traces"xdebug.profiler_enable = 0
xdebug.trace_enable = 1
xdebug.cli_color = 1
xdebug.remote_log = "/home/vagrant/Projects/logs/xdebug_remote.log"
Если я бегу php -m
Я вижу, что Xdebug нет в этом списке, потому что Homestead 7 делает PHP 7.2 по умолчанию, что несовместимо с Xdebug на этом посту. Однако, если я сделаю php7.1 -m
Я вижу Xdebug в списке и php7.1 -v
показывает:
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
Так что я знаю, что Xdebug установлен правильно.
Приставки PhpStorm показывают, что он использует интерпретатор 7.1 в Vagrant и может успешно подключаться к Vagrant. Я вручную перешел к xdebug.so
файл на vagrant через пользовательский интерфейс PhpStorm просто чтобы быть уверенным, что он может его найти.
Запуск сценариев CLI, выполнив php7.1 artisan
явно вместо php artisan
не помогает.
Это противоречиво проявляется в моем /home/vagrant/Projects/logs/xdebug_remote.log
но в большинстве случаев нет удаленной записи в журнале:
Log opened at 2018-01-17 17:50:46
I: Checking remote connect back address.
I: Checking header 'HTTP_X_FORWARDED_FOR'.
I: Checking header 'REMOTE_ADDR'.
I: Remote address found, connecting to 192.168.10.1:9001.
W: Creating socket for '192.168.10.1:9001', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2018-01-17 17:50:46
Почему PhpStorm больше не может получать сигналы от Xdebug на Vagrant?
Чтобы это исправить, мне нужно установить PHP 7.1 по умолчанию вместо PHP 7.2. Это было сделано путем запуска этой серии команд и последующего повторного подключения Xdebug в PHPStorm:
sudo update-alternatives --set php /usr/bin/php7.1
sudo update-alternatives --set phar /usr/bin/phar7.1
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1
sudo update-alternatives --set phpize /usr/bin/phpize7.1
sudo update-alternatives --set php-config /usr/bin/php-config7.1
sudo service php7.1-fpm restart
Других решений пока нет …