我正在尝试让xdebug为PHP工作,Netbeans连接到Vagrant配置的VM(如果重要的话,使用PuPHPet进行设置)
我的VM上有这些php.ini设置:
[XDEBUG]
xdebug.remote_connect_back=1
xdebug.default_enable=1
xdebug.remote_autostart=0
xdebug.max_nesting_level=256
xdebug.remote_enable=1
xdebug.remote_log=/tmp/php5-xdebug.log
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug
Netbeans的路径映射正确并设置为本地网站运行。它正确启动带有GET变量的浏览器以开始调试。我的Windows防火墙允许netbeans,我添加了一条规则,允许从我的VM IP到我的本地IP(192.168.56.x地址,所以它是正确的子网)。
从我的VM我可以ping我的主机操作系统。但是在xdebug日志中,我只看到:
Log opened at 2014-08-23 17:43:28
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-08-23 17:43:28
在我的主机操作系统上,我尝试过netstat并验证Netbeans正在侦听端口9000。 我在Virtualbox中删除 9000上的端口转发,因为我读过我不需要它(最初我有它,但Netbeans抱怨其他人正在监听9000)。
我已经意识到php-fpm也使用端口9000,所以我尝试了9001(在ini中使用php-fpm重启,在IDE中,也验证了IDE正在监听9001)。相同的结果:
I: Checking remote connect back address.
I: Remote address found, connecting to 192.168.56.1:9001.
E: Time-out connecting to client. :-(
Log closed at 2014-08-23 18:11:59
所以现在我已经阅读了所有内容,而且我被困在这里。有什么想法吗?
答案 0 :(得分:5)
正如我发布的那样,我找到了答案:
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.56.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth1
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
注意最后一行。所以我改变了:
xdebug.remote_connect_back=1
到
xdebug.remote_host=10.0.2.2
它在php-fpm重启后立即起作用了!