我正在尝试让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
所以现在我已经阅读了所有内容,而且我被困在这里.有任何想法吗?
解决方法:
在我发帖时,我找到了答案:
$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重启后立即起作用!