Xdebug远程服务器没有连接 - netbeans

时间:2012-12-17 03:44:31

标签: php netbeans virtualbox xdebug remote-debugging

我正在尝试在以下场景中使用XDebug

  • 我的电脑Windows 7,Netbeans 6.9
  • 具有虚拟Box的同一网络(Windows 7)上的计算机上的物理主机
  • Virtual CentOS 6.2,Apache服务器2.2.15和PHP 5.3.3
  • 我的网站的PHP代码位于CentOS上的共享文件夹中,位于/ var / www / html / mysite中,并且是独立的,可以通过服务器ip访问它192.168.1.240
  • 已修改C:\ Windows \ System32 \ drivers \ etc \ hosts 192.168.1.240 mysite
  • 可以从我的Windows主机上\\HostIP\html\mysite访问PHP代码,具有R / W权限

我在计算机上创建了一个Netbeans项目,指向\\HostIP\html\mysite。在项目运行配置中,我有以下内容:

  • 运行方式:远程网站
  • 项目网址:http://mysite/
  • 索引文件:index.php(项目中确实存在)

在高级运行配置中:

  • 我选中了“默认”
  • 我没有触及代理设置

我在CentOS VM上的php.ini中有以下内容

;extension=xdebug.so
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
;xdebug.remote_host=192.168.1.31
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.remote_port=9000

注意:我尝试使用extension=xdebug.so配置,并尝试使用取消注释xdebug.remote_connect_back=1评论xdebug.remote_host=192.168.1.31,这是我的计算机IP地址。

所以基本上我有像这个图像的所有配置 enter image description here

但仍然无法正常工作!运行后,调试器将打开此URL

http://mysite/index.php?XDEBUG_SESSION_START=netbeans-xdebug

并且没有任何事情会发生,只有netbeans列表等待Xdebug连接

3 个答案:

答案 0 :(得分:1)

当我想在远程主机上调试时,我通常需要通过ssh隧道将本地9000端口转发到远程服务器的本地9000:

ssh -R 9000:localhost:9000 username@remote.example.com

在Windows上使用bitvise ssh client或putty来获得相同的效果。

同样在项目设置中 - >运行配置 - >高级按钮

确保指定项目文件的远程和本地完整路径,以便调试器可以附加(不要担心此屏幕中的端口是标准的)。

答案 1 :(得分:1)

我知道这是一个老帖子,但它似乎是我今晚最常遇到的那个。

NAT网络设置是获得最少冲突的方法。在Windows 7防火墙中,设置自定义入站规则,以允许入站流量到端口9000,以用于VM所在的整个/ 24网络(192.168.202 / 24)。

我在php.ini中使用 2.2.7 Netbeans 8.0.2 进行XDebug设置:

zend_extension=xdebug.so

xdebug.remote_enable=1
xdebug.remote_connect_back=1 
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
xdebug.show_local_vars=0
;xdebug.extended_info=1
xdebug.output_buffering=off
xdebug.remote_log=/var/log/xdebug.log

最后,我想指出Netbeans 侦听远程文件配置中的远程地址设置。做一个快速netstat -an显示Netbeans正在侦听端口9000,在我的初始桥接网络设置的旧地址上具有CLOSE_WAIT状态。 即使更改了项目URL和远程连接IP地址,并关闭了几个xdebug连接,这也从未改变。只有在关闭Netbeans之后,过时的连接才会丢失。再次启动Netbeans后,新的远程服务器URL将用于远程xdebug连接。

从未讨论过提及处于陈旧状态的Netbeans,并且从IDE中停止xdebug连接的能力给出了重置套接字的错误感觉。

如果它仍然不起作用,请使用VM上提供的调试客户端,使用"访问项目页面??XDEBUG_SESSION_START = netbeans-xdebug"附加到index.php URL,并注意进入的xdebug信息。至少你知道它在本地工作。

答案 2 :(得分:0)

尝试为执行的脚本设置任何断点。当ide不遵守“在第一行中断”标志时,调试会话可能不会显示。

同时检查php.ini中的xdebug.idekey属性是否等于Netbeans设置中的ideKey。