我试图让xdebug工作的PHP Netbeans连接到一个Vagrant配置的虚拟机(设置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,我添加了一个规则,允许从我的虚拟机IP到我的本地IP的所有内容(192.168.56。X地址,所以它是正确的子网)。
从我的虚拟机我可以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中删除了端口转发,因为我已经读到我不需要它(最初我有它,但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重启后立即工作!