8

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

  • 我的电脑 Windows 7,Netbeans 6.9
  • 与虚拟 Box 位于同一网络 (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.168.1.240 mysite
  • 可以从我的 Windows 主机上访问 PHP 代码\\HostIP\html\mysite,并具有 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 地址。

所以基本上我有这个图像的所有配置 在此处输入图像描述

但仍然无法正常工作!运行后调试器会打开这个 url

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

什么都不会发生,只是 netbeans 列表等待 Xdebug 连接

4

3 回答 3

1

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

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

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

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

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

于 2014-04-10T21:27:04.573 回答
1

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

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

我在 php.ini 中的工作 XDebug 设置,使用2.2.7Netbeans 8.0.2

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在远程文件 config 中侦听远程地址设置。快速执行 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 信息进入。至少那时你知道它在本地工作。

于 2015-02-05T08:51:57.227 回答
0

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

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

于 2013-07-11T09:01:59.543 回答