Vagrant 流浪Xdebug与PhpStorm 2020.3的连接问题
我花了一天多的时间试图让PhpStorm在一个运行Xdebug的流浪虚拟机中调试Drupal站点,我觉得我已经接近了——但只是还没有达到 目前,在PhpStorm中调试时,我有一个错误: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服务器或共
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