连接 Vagrant Xdebug 与 PhpStorm 2020.3 的问题

Issues connecting Vagrant Xdebug with PhpStorm 2020.3

我花了一天多的时间试图让 PhpStorm 在 Vagrant 虚拟机中调试 Drupal 站点 运行 Xdebug,我觉得我已经接近了 - 但还没有完全实现。

目前在PhpStorm调试时报错:

Waiting for incoming connection with ide key 'PHPSTORM'

在 VM 的 Xdebug 日志中(在 /tmp/xdebug.log

[2094] I: Checking remote connect back address.
[2094] I: Checking header 'HTTP_X_FORWARDED_FOR'.
[2094] I: Checking header 'REMOTE_ADDR'.
[2094] I: Remote address found, connecting to 192.168.88.1:9000.
[2161] E: Time-out connecting to client (Waited: 200 ms). :-(
[2161] Log closed at 2020-12-15 04:25:32

我尝试设置 Zero-configuration debugging 但没有成功。

对于调试配置,我有一个可以正确验证的 PHP 远程调试,尽管它始终默认为 'Local Web Server or Shared Folder' 而不是 'Remote Web Server' 选项。

当我启动该项目时,我将其设置为本地 Web 服务器选项,但我担心我没有更改正确的设置以使其成为远程 Web 服务器。部署的连接类型现在是 'Local or mounted folder',但最初是 'In-place'。

在语言和框架下 --> PHP --> 服务器,我在端口 80 上设置了它,使用 Xdebug 并且没有路径映射。我尝试更改端口等但它没有验证所以我确信服务器设置是正确的并且 PhpStorm 正在正确地与虚拟机通信。

我更改了 /etc/php/7.4/cli/php.ini 文件,但 phpinfo() 说配置来自 /etc/php/7.4/fpm/php.ini。我在 php.ini 文件中所做的更改仍然有效。 phpinfo() 正在显示:

xdebug.idekey: PHPSTORM
xdebug.remote_host: 10.0.2.2
xdebug.remote_port: 9000
xdebug.remote_autostart: Off
xdebug.remote_connect_back: On

现在真的不知道接下来要做什么。令人难以置信的沮丧,所以希望有人能给出一些启示。

编辑 --- 根据评论,这里是设置的屏幕截图:

部署:本地或装载的文件夹

PHP 设置

服务器设置

调试设置

从远程服务器验证调试器

运行 Chrome 使用调试插件 运行

错误信息

运行调试配置设置

使用配置文件启动 phpinfo,显示需要编辑 xdebug 设置的位置。

phpinfo()的Xdebug设置


根据评论进行的一些测试:

登录'vagrant SSH'后显示要使用的IP地址(10.0.2.2)。本地电脑也是IP 10.1.1.150 telnet测试这两个作品。

Xdebug ini文件的'sudo nano'


注意:将远程连接改回 0 修复了连接:

xdebug.remote_connect_back=0

然后需要在服务器设置中打开路径映射,然后一切正常。

非常感谢 LazyOne 提供的有益而全面的评论。 :)

1) 检查网络服务器是否使用了单独的 php.ini 文件,-- 您需要编辑正确的 php.ini 文件。

运行 phpinfo() 并检查是否有 Xdebug 的 ini 文件。就我而言,这是在 /etc/php/7.4/fpm/conf.d/20-xdebug.ini

2) 你的 Xdebug 版本是多少?

Xdebug 版本 2 和版本 3 的参数略有不同。在我的例子中,我是 运行 Xdebug 2.9.5

3) 从 VM 内部看到的主机 OS 的 IP 地址是什么?这就是 Xdebug 应该连接的地方(因为它是连接到 IDE 而不是其他方式的 Xdebug)。

当您第一次登录 SSH 时,会显示一个 IP 地址。这就是 Xdebug 的 IP 应该是什么。在我的示例中,这是 10.0.2.2

4) xdebug.remote_connect_back: On -- 尝试将其关闭并确保你有正确的 xdebug.remote_host (因为 Xdebug v2 可能不会退回到 remote_host 值当自动检测到 IP 失败时。

这修复了我的连接!

sudo nano /etc/php/7.4/fpm/conf.d/20-xdebug.ini

然后更改:

xdebug.remote_connect_back=1

收件人:

xdebug.remote_connect_back=0

保存,然后重启服务器。

再次测试连接。在这一步之后,我在主机和远程服务器之间建立了连接,但我还必须在 PhpStorm 中打开路径映射以使调试器 100% 工作。

5) 确保 PhpStorm 是在启用“phone handle”图标时侦听 Xdebug 端口的那个(使用 netstat 或类似工具确认)并且在防火墙中被允许。

6) 如果您知道正确的 IP 并且确定 PhpStorm 正在监听——您可以从 VM 内部使用 telnet 并尝试连接到 Xdebug 端口上的 IDE——如果已连接,则 IP、端口和防火墙很可能已正确设置。

即使出现错误消息,telnet 检查仍在运行。所以它指出了 Xdebug 设置的问题,而不是主机和远程服务器之间的握手问题。

感谢 LazyOne 的评论找到答案并提供了一个很好的工作流程来帮助识别问题。

我遇到的事情与您描述的非常相似。 我能够从 xdebug cli 工具 (dbgpClient) 启动调试会话,这向我证明这是 phpStorm 的问题。

我的项目使用的是旧版 xdebug。 (2.2.7)

Downgrading to phpStorm 2020.2.4 resolved my issue。 (在jetbrains工具箱里一键降级)

感谢您对此问题的解答。我花了半天时间才发现带有 php5.3.10 的 xdebug 2.2.7 在 Phpstorm 2020.3 上不起作用。所以我降级到 2020.2.4,它又可以工作了。