Php 远程服务器未连接的Xdebug-netbeans

Php 远程服务器未连接的Xdebug-netbeans,php,netbeans,virtualbox,xdebug,remote-debugging,Php,Netbeans,Virtualbox,Xdebug,Remote Debugging,我试图在以下场景中使用XDebug 我的电脑Windows 7、Netbeans 6.9 同一网络(Windows 7)上的计算机上的物理主机与虚拟机箱 虚拟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\hosts192.1

我试图在以下场景中使用XDebug

  • 我的电脑Windows 7、Netbeans 6.9
  • 同一网络(Windows 7)上的计算机上的物理主机与虚拟机箱
  • 虚拟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
  • PHP代码可以从我的Windows主机
    \\HostIP\html\mysite
    上访问,并具有R/W权限
我在我的计算机上创建了一个Netbeans项目,指向
\\HostIP\html\mysite
。在项目运行配置中,我有以下内容:

  • 运行方式:远程网站
  • 项目URL:
    http://mysite/
  • 索引文件:Index.php(项目中确实存在)
在高级运行配置中:

  • 我选择了“默认”
  • 我还没有触及代理设置
我在CentOS虚拟机的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
的配置,并尝试了使用uncomment
xdebug.remote\u connect\u back=1
注释
xdebug.remote\u host=192.168.1.31
这是我的计算机ip地址

所以基本上我有像这张图片一样的所有配置

但还是不行!运行后,调试器将打开此url

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

如果netbeans正在等待Xdebug连接,那么什么也不会发生。请尝试为执行的脚本设置任何断点。当ide不遵守“第一行中断”标志时,调试会话可能不会显示


还要检查php.ini中的xdebug.idekey属性是否等于Netbeans设置中的idekey。

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

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

在windows上使用bitvise ssh客户端或putty可以获得相同的效果

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


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

我知道这是一篇旧文章,但它似乎是我今晚遇到最多的文章

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

在php.ini中使用2.2.7Netbeans 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,在我最初的桥接网络设置中的一个旧地址上处于关闭等待状态。即使在更改了项目URL和远程连接IP地址并关闭了几个xdebug连接之后,这一点也没有改变。只有在关闭Netbeans之后,过时的连接才会断开。一旦Netbeans再次启动,新的远程服务器URL将用于远程xdebug连接

从未讨论过Netbeans保持过时状态的问题,并且从IDE停止xdebug连接的能力给了重置套接字的错误感觉


如果仍然不起作用,请在VM上使用提供的debugclient,访问项目页面,并在index.php URL后附加“?XDEBUG_SESSION_START=netbeans XDEBUG”,然后查看XDEBUG信息。至少你知道它在本地有效

确保您可以通过端口9000上的NetBeans访问主机。从CentOs do:telnet 192.168.1.31 9000ok我试过了,并“连接到192.168.1.31”。所以它工作正常,服务器可以连接到netbeansOk,检查PHP配置是否一切正常此处:Summary Xdebug installed:2.2.1服务器API:Apache2.0处理程序窗口:无Zend服务器:无PHP版本:5.3.3 Zend API nr:220090626 PHP API nr:20090626调试构建:无线程安全构建:无配置文件路径:/etc配置文件:/etc/PHP.ini扩展目录:/usr/lib64/php/modules您已经在运行最新的Xdebug版本控制检查相反的情况:关闭NetBeans并在端口9000上挂起netcat。检查调试器是否真的到达它,以及它是否尝试重新连接。