问题 xdebug连接到客户端的超时。 :-(使用phpstorm 7.1.3 / vagrant / virtualbox / magento


有一段时间,我正在使用Phpstorm EAP,并且xdebug完美运行。我最近购买了个人许可证,并将我在EAP中的所有设置导入7.1.3。现在xdebug不起作用。

这是xdebug.ini

zend_extension=xdebug.so

xdebug.remote_host = 192.168.56.1
xdebug.remote_cookie_expire_time = 36000
xdebug.remote_log = /tmp/xdebug.log
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.idekey="PHPSTORM"
xdebug.scream=0
xdebug.remote_connect_back=1
xdebug.show_local_vars=1

xdebug也在php.ini中显示。我甚至跑进去了 http://xdebug.org/wizard.php 并安装了最新版本。

Phpstorm正在侦听端口9000上的xdebug,并且“侦听PHP调试连接”已启用。

我的xdebug日志经常告诉我这个:

Log opened at 2014-07-18 17:46:16
I: Checking remote connect back address.
I: Remote address found, connecting to 192.168.56.1:9000.
E: Time-out connecting to client. :-(
Log closed at 2014-07-18 17:46:16

我甚至尝试过注册表编辑: http://brianreiter.org/2010/09/18/fix-virtualbox-host-only-network-adapter-creates-a-virtual-public-network-connection-that-c​​auses-windows-to-disable-services/

无论我尝试什么,xdebug都会超时。即使关闭了所有防火墙。

我在Windows 7 Enterprise上。 VM是puphpet / centos65-x64

编辑 忘了提到Phpstorm中的IDE键是PHPSTORM


10524
2017-07-18 18:39


起源

从您的Vargant机器 - 尝试通过连接到PhpStorm telnet 在那个xdebug端口(192.168.56.1:9000)上,显然是“侦听PHP调试连接”。如果没有 - 那么它的防火墙(检查两侧)..或Linux / Vagrant的一些安全设置。 - LazyOne
因此: 1) 尝试不同的端口号(必须在xdebug设置和PhpStorm中设置,而“电话句柄”图标关闭) 2) 安全设置 - 看看最近有什么人 - 也许它会帮助你: devnet.jetbrains.com/message/5519942#5519942 - LazyOne
telnet称“连接被拒绝”。我的工作站或虚拟机上没有防火墙。当我尝试更改ini中的端口号时,日志仍会尝试9000.我已经验证phpinfo正在使用我正在编辑的ini,但是,它仍然不会更改端口。这可能是个问题。无论哪种方式,在流浪盒中都会出现一些时髦的东西。 - brianwalleshauser
我已经尝试了你发送的链接中的答案,但它仍然无法正常工作。超时连接到客户端。 :-( - brianwalleshauser
“当我尝试更改ini中的端口号时,日志仍会尝试9000。” 你重启了Apache吗?很可能(在大多数配置方案中)对php.ini的更改只在启动时读取。 - LazyOne


答案:


为了直接回答您的困惑,两个设置脱颖而出。他们是 xdebug.remote_host 和 xdebug.remote_connect_back。前一个设置的IP不正确,尤其是在Vagrant设置中。应该是这样的 10.0.2.2。此外,不应定义和启用后一种设置。启用时,它完全 忽略了以前的设置因此使它无用。总而言之,前一种设置是错误的,后一种设置忽略了它,但后一种设置也是错误的。但是,这些设置只是Xdebug无法工作的部分原因。

扩展:使用Vagrant在PhpStorm中设置Xdebug

Vagrant引入了标准的非虚拟化开发环境中不存在的复杂层。虽然上述几点可能是正确的,但是为了通过Vagrant在PhpStorm中运行Xdebug,还需要遵循其他设置和过程。我挣扎了一段时间,经过几次尝试失败,成功获得了连接。在线文档也存在很大的不足以实现这种设置,因此在成功完成整个设置后,我在我的博客上记录了指南。详细描述了整个设置过程,并附有相关的屏幕截图。我也使用CentOS 6.5 64位,指南反映了这一点。它甚至已经针对Magento进行了测试。

如何通过Vagrant在PhpStorm中配置Xdebug


11
2017-08-08 15:53



虽然我现在选择使用EAP,但我觉得这是一种宝贵的资源。我把它传给了仍然有问题的同事。谢谢! - brianwalleshauser
是的,由于能够定义远程解释器(想想Xdebug和PhpUnit),PhpStorm的下一个主要迭代将使这些过程变得更加容易。我明白你为什么要坚持使用EAP。如果您的团队有任何疑问,欢迎他们在博客上提问。 - danemacmillan