无法使用PhpStorm + Vagrant + XDebug进行调试

23

我在Windows 7机器上无法让XDebug与PhpStorm和Vagrant配合使用。我已经按照所有调试教程的指导进行了尝试,但都没有成功。

我尝试过以下步骤:

  • PhpStorm始终监听调试连接
  • 具有以下内容的xdebug.ini文件:

zend_extension = "..../xdebug.so"
xdebug.remote_enable= 1
xdebug.remote_handler=dbgp
xdebug.remote_host= 33.33.33.10
xdebug.remote_port= 9000
xdebug.remote_connect_back= 1
xdebug.remote_autostart= 1
xdebug.remote_log = "...."
  • 尝试将 PhpStorm 设置连接到 localhost:808033.33.33.10,但都没有成功。
  • 日志文件始终输出:

I: Checking remote connect back address.
W: Remote address not found, connecting to configured address/port: 33.33.33.10:9000. :-|
E: Could not connect to client. :-(
  • 每当我尝试调试时,防火墙(ESET智能安全)总是关闭的
  • 设置路径映射,也没有起作用

我不知道该怎么办,但我真的需要能够进行调试。
谢谢你的帮助!


2
机器33.33.33.10属于哪个 -- 你的真实机器(PhpStorm运行的机器)还是虚拟机?它必须是带有PhpStorm的机器的IP地址(从虚拟机中看到的)-- 检查$_SERVER['REMOTE_ADDR']的内容。阅读好文章:http://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm - LazyOne
33.33.33.10属于Vagrant,但在Windows上,每个人都说它必须是VM而不是带有PhpStorm的机器。 - Nadav S.
它必须是调试客户端(在我们的情况下为PhpStorm)运行的计算机的IP地址--请查看xdebug手册中关于xdebug.remote_host的说明。除非您正在使用SSH隧道和/或xdebug代理(这有点奇怪(主要是代理),因为它在同一台计算机上而不是在互联网上的防火墙和路由器背后),在这种情况下,听取"所有人的建议"并询问他们如何设置--我没有使用过这个。 - LazyOne
如果仍然无法工作:1) 确保实际上是 PhpStorm 监听 xdebug 端口,而不是另一个程序(tcpview 或标准的 netstat 可以显示此类信息;2) 尝试使用 telnet 从您的 vagrant box 连接到 PhpStorm 上的该端口(如果存在连接问题:防火墙或其他问题)。 - LazyOne
好的:PhpStorm正在监听9000端口,VBoxHeadless也在监听9000端口,但除此之外什么都没有。 - Nadav S.
显示剩余2条评论
3个回答

43

问题非常愚蠢 - 我在Vagrantfile中转发了9000端口,但其实并不需要这么做...

现在,我看到xdebug.ini中唯一必要的行是:

zend_extension = ...
xdebug.remote_enable = on
xdebug.remote_connect_back = on

设置非常简单,只要不做愚蠢的事情...


15
对于那些想知道为什么Nadav停止转发端口9000后它开始工作的人来说,这是因为Xdebug实际上是反过来工作的。 Xdebug不是你的计算机连接到Vagrant box的9000端口,而是反过来——你的Vagrant box将连接到你(主机)计算机上的Xdebug客户端。James Walker在这里有一个不错的解释:http://walkah.net/blog/debugging-php-with-vagrant/。 - Jonathan
2
即使不需要remote_handler - dbgp也会默认设置。 - Yuri Astrakhan
2
debug.remote_connect_back = on 正是我所需要的:我的 Mac OS X 主机上运行着 Ubuntu 14.04 的 vagrant。 - Jimbo

0

我必须设置

xdebug.remote_connect_back = '0'
xdebug.remote_host= '10.0.2.2'

所以我的整个配置看起来像这样:

xdebug.default_enable: '1'
xdebug.remote_autostart: '1'
xdebug.remote_connect_back: '0'
xdebug.remote_enable: '1'
xdebug.remote_handler: dbgp
xdebug.remote_host: '10.0.2.2'
xdebug.max_nesting_level: '400'

主机:Linux

虚拟机:使用VirtualBox的PuPHPet Vagrant

在PhpStorm中没有特殊配置

在这里找到它:http://jeromejaglale.com/doc/php/xdebug_vagrant_puphpet_phpstorm


0

确保您从PHPStorm内部连接到正确的URL。例如,我的vagrant box的IP地址为192.168.50.2,因此我必须设置我的项目URL => 192.168.50.2


感谢30equals,我已经成功解决了问题。唯一的问题是我在Vagrantfile中转发了端口9000,但实际上我不需要这么做... 关于你的答案-我已经尝试过了,但还是谢谢! - Nadav S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接