Vagrant 流浪Xdebug与PhpStorm 2020.3的连接问题

Vagrant 流浪Xdebug与PhpStorm 2020.3的连接问题,vagrant,phpstorm,xdebug,Vagrant,Phpstorm,Xdebug,我花了一天多的时间试图让PhpStorm在一个运行Xdebug的流浪虚拟机中调试Drupal站点,我觉得我已经接近了——但只是还没有达到 目前,在PhpStorm中调试时,我有一个错误: Waiting for incoming connection with ide key 'PHPSTORM' 在虚拟机的Xdebug日志中(位于/tmp/Xdebug.log) 我试着在没有任何运气的情况下建立了这个系统 对于调试配置,我有一个正确验证的PHP远程调试,尽管它总是默认为“本地Web服务器或共

我花了一天多的时间试图让PhpStorm在一个运行Xdebug的流浪虚拟机中调试Drupal站点,我觉得我已经接近了——但只是还没有达到

目前,在PhpStorm中调试时,我有一个错误:

Waiting for incoming connection with ide key 'PHPSTORM'
在虚拟机的Xdebug日志中(位于
/tmp/Xdebug.log

我试着在没有任何运气的情况下建立了这个系统

对于调试配置,我有一个正确验证的PHP远程调试,尽管它总是默认为“本地Web服务器或共享文件夹”,而不是“远程Web服务器”选项

当我开始这个项目时,我将它设置为一个本地web服务器选项,我担心我没有更改正确的设置以使它成为一个远程web服务器。部署的连接类型现在是“本地或装入文件夹”,但最初是“就地”

在Languages&Frameworks-->PHP-->Servers下,我使用Xdebug在端口80上进行了设置,没有路径映射。我尝试更改端口等,但它没有验证,因此我确信服务器设置是正确的,并且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

错误消息

运行调试配置设置

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

phpinfo()的Xdebug设置


根据注释进行的一些测试:

登录到“vagrant SSH”后,它会显示要使用的IP地址(10.0.2.2)。本地计算机也是IP 10.1.1.150,这两项工作的远程登录测试

Xdebug ini文件的“sudo nano”


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

xdebug.remote_connect_back=0
然后需要在服务器设置中打开路径映射,然后一切都正常工作

非常感谢LazyOne的帮助和透彻的评论。:)

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

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

2) 你的Xdebug版本是什么

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

3) 从虚拟机内部看,主机操作系统的IP地址是多少?这就是Xdebug应该连接的地方(因为是Xdebug连接到IDE,而不是其他方式)

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

4) xdebug.remote\u connect\u back:On——尝试将其设置为off,并确保拥有正确的xdebug.remote\u主机(因为当自动检测到IP失败时,xdebug v2可能不会返回到remote\u主机值)

这修复了我的连接

sudo nano /etc/php/7.4/fpm/conf.d/20-xdebug.ini
然后改变:

xdebug.remote_connect_back=1
致:

保存,然后重新启动服务器

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

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

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

即使有错误消息,telnet检查仍在工作。因此,它指出了Xdebug设置的问题,而不是主机和远程服务器之间的握手问题


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

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

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


(只需单击jetbrains工具箱中的一个按钮即可降级)

感谢您在本期中提供的答案。我花了半天时间才发现带有php5.3.10的xdebug 2.2.7在phpstorm2020.3上不起作用。因此,我降级到2020.2.4,它又能工作了。

1)请发布所有设置的屏幕截图(包括
phpinfo()
输出的Xdebug部分,捕获方式与您尝试调试的方式相同——无论是CLI还是网页)。2) 是的,在Linux和Mac上,在CLI和web服务器中使用单独的php.ini文件是很常见的,所以是的——您需要编辑正确的php.ini文件。3)您的Xdebug版本是什么?4) 从虚拟机内部看,主机操作系统的IP地址是多少?这就是Xdebug应该连接的地方(因为是Xdebug连接到IDE,而不是其他方式)。5)
xdebug.remote\u connect\u back:On
--尝试将其设置为
off
,并确保您拥有正确的
xdebug.remote\u主机
(因为当自动检测到IP失败时,xdebug v2可能不会回退到remote\u主机值。6)确保PhpStorm是侦听xdebug端口的
xdebug.remote_connect_back=1
xdebug.remote_connect_back=0