我使用的是一个非常旧的 Homestead 版本 2.0,启用了 PHP 7.0 和 Xdebug。当我升级到支持同时运行多个 PHP 版本的 Homestead 7.0.1 时,Xdebug 停止连接到 PhpStorm 2017。
PhpStorm 中的配置与 Homestead 升级前相同。
我将我的原件复制xdebug.ini
到 Xdebug 的新 PHP 7.1 ini 中。这是我当前的配置:
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 的首选项显示它在 Vagrant 上使用 7.1 解释器,并且能够成功连接到 Vagrant。我通过 PhpStorm 的 UI 手动导航到xdebug.so
vagrant 上的文件,以确保它可以找到它。
通过php7.1 artisan
显式执行而不是运行 CLI 脚本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 不能再接收来自 Vagrant 上的 Xdebug 的信号了?