PhpStorm + Xdebug:已建立连接,PhpStorm 中没有 Debug window 弹出窗口

PhpStorm + Xdebug: Connection established, no Debug window popup in PhpStorm

我正在努力让 PhpStorm 和 Xdebug 在特定的 Vagrant VM 上很好地运行。

如何有效追踪并解决此虚拟机连接 PhpStorm 和 Xdebug 的问题?

虽然我可以看到 PhpStorm 和 Xdebug 在一定程度上进行通信,但来自 Xdebug 的连接不会启动 PhpStorm 的调试 window,并且无法使用 PhpStorm 的调试功能。

有问题的工具组合是:

我能够让这个 Vagrant VM 连接到 Atom 的 php-debug Xdebug 集成。我还可以让这个 PhpStorm 连接到其他 Vagrant 实例的 Xdebug!

来自有问题的服务器的 Xdebug 配置:

# xdebug.idekey = "PHPSTORM"
# xdebug.remote_connect_back = on
xdebug.remote_autostart = off
# xdebug.remote_connect_back = on
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.remote_host = 10.0.2.2 # IP of the host system
xdebug.remote_log="/tmp/xdebug.log"
xdebug.remote_mode=req
xdebug.remote_port=9000

我在使用此配置时在日志文件 /tmp/xdebug.log 中看到了输出。

[8264] Log opened at 2019-03-14 01:39:02
[8264] I: Connecting to configured address/port: 10.0.2.2:9000.
[8264] I: Connected to client. :-)
[8264] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/html/drupal/web/index.php" language="PHP" xdebug:language_version="7.1.26-1+ubuntu16.04.1+deb.sury.org+1" protocol_version="1.0" appid="8264" idekey="PHPSTORM"><engine version="2.7.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2019 by Derick Rethans]]></copyright></init>
[8264]
[8264] <- feature_set -i 1 -n show_hidden -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
[8264]
[8264] <- feature_set -i 2 -n max_depth -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
[8264]
[8264] <- feature_set -i 3 -n max_children -v 100
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
[8264]
[8264] <- feature_set -i 4 -n extended_properties -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="4" feature="extended_properties" success="1"></response>
[8264]
[8264] <- feature_set -i 5 -n notify_ok -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="5" feature="notify_ok" success="1"></response>
[8264]
[8264] <- stdout -i 6 -c 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="6" success="1"></response>
[8264]
[8264] <- status -i 7
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="status" transaction_id="7" status="starting" reason="ok"></response>
[8264]
[8264] <- step_into -i 8
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file:///var/www/html/drupal/web/index.php" lineno="14"></xdebug:message></response>
[8264]
[8264] <- eval -i 9 -- aXNzZXQoJF9TRVJWRVJbJ1BIUF9JREVfQ09ORklHJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="9"><property type="bool"><![CDATA[0]]></property></response>
[8264]
[8264] <- eval -i 10 -- aXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="10"><property type="bool"><![CDATA[1]]></property></response>
[8264]
[8264] <- eval -i 11 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="11"><property type="string" size="9" encoding="base64"><![CDATA[bG9jYWxob3N0]]></property></response>
[8264]
[8264] <- eval -i 12 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="12"><property type="string" size="4" encoding="base64"><![CDATA[ODAwMA==]]></property></response>
[8264]
[8264] <- eval -i 13 -- KHN0cmluZykoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="13"><property type="string" size="1" encoding="base64"><![CDATA[Lw==]]></property></response>
[8264]

如果我然后单击 "Stop listening for PHP debug connections",我会立即看到以下记录到 /tmp/xdebug.log

[8264] <- run -i 14

紧随其后的是 this logged output(对于这个问题来说太大了),页面和资源会像以前一样加载。

如何有效追踪并解决此虚拟机连接 PhpStorm 和 Xdebug 的问题?

PhpStorm > 语言 > PHP:

PhpStorm > 语言 > PHP > 调试:

您是否尝试取消注释 # xdebug.remote_connect_back = on

我们发现在 PhpStorm 和 XDEBUG 之间工作总是需要它。或者更好:

xdebug.remote_connect_back=1

我们在上面使用了我们的 Vagrant 解决方案 WPLib Box,我们专门构建它是为了使 XDEBUG 使用 PhpStorm 变得容易。

我会在 link 中向您展示它,但该存储库是私有的。然而,我们最近在 Vagrant 中切换到 Docker,我们的 Docker 回购是 public os 这里是 our xdebug.ini file 我们的 PHP 7.2.6 Docker容器。

希望这有助于解决您的问题。

您正在使用 PhpStorm 2018。2.x 和 Xdebug 2.7。

将 PhpStorm 升级到最新的稳定版 2018。3.x 或将 Xdebug 降级到 2。6.x

问题出在 Xdebug 协议中最近更改的 XML 命名空间,从 Xdebug 2.7 开始(https 而不是 http)。自 PhpStorm 2018.3.0 以来 fixed/supported(请参阅 WI-43622)。