繁体   English   中英

使用Netbeans和XDebug进行远程PHP调试

[英]Remote PHP Debugging with Netbeans and XDebug

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

  • Windows 7上的物理主机,带有Netbeans 7.1.1
  • Ubuntu上的虚拟客户机,Apache服务器和PHP 5.3.10
  • 我的网站的PHP代码位于Ubuntu上的共享文件夹中,位于/ var / www / mysite中
  • PHP代码可以从我的Windows主机上访问,\\\\ guestIP \\ mysite,具有R / W权限
  • 网站可从http://mysite.local.fr访问,来自主持人和访客

我从Windows主机创建了一个Netbeans项目,指向\\\\ guestIP \\ mysite。 在项目运行配置中,我有以下内容:

  • 运行方式:本地Web服务器
  • 项目网址: http//mysite.local.fr
  • 索引文件:index.php(项目中确实存在)

在高级运行配置中:

  • 我检查了“每次询问”(我也尝试使用“请勿问”并自行使用会话密钥启动浏览器)
  • 我尝试设置'/ var / www / mysite' - \\\\ GuestIP \\ mysite进行映射(并尝试不使用任何东西)
  • 我没有触及代理设置

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

xdebug.remote_enable = on
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = /tmp
;xdebug.remote_host=localhost,<HostIP>, mysite.local.fr
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.idekey="netbeans-xdebug"
xdebug.remote_mode=req

这些都不起作用,Netbeans不会在Windows的任何断点处停止。

使用Netbeans直接从我的VM调试工作正常。

有人能告诉我如何让我的调试器从Windows远程工作吗? 谢谢

对不起,我不能发表评论了。 @David @ JamesB41:我一直在寻找这个。 我的设置是带有NetBeans 7.1的Windows 7主机和VirtualBox中的Ubuntu VM。 我将NetBeans项目设置为远程项目,使用SFTP上载和下载。

以下设置适用于我,只需将主机的IP用作remote_host,并确保VM可以看到它。

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=10.217.165.193
xdebug.remote_port=9000
xdebug.remote_log="/tmp/log/xdebug.log"

NetBeans将在入口点断点处停止(如果您在PHP-> Debugging中设置了选项)。 但是,它不会停止在NetBeans创建的断点上,因为它会运行VM的文件。 您可以使用xdebug_break(),它将显示堆栈和变量。 它将在NetBeans断点处停止,并突出显示是否在项目配置>运行配置>高级中正确映射文件夹。 真棒。 我完成了。

connect_back配置似乎没有帮助,可能是因为没有填充$ _SERVER ['REMOTE_ADDR']。)

通过以下文档,使用NetBeans进行远程调试。 很有帮助。 http://stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-remote-apache-server/

知道这是旧的但很好的提醒。 确保在虚拟机中使用nat,默认情况下,在xdebug端口上将端口转发设置回本地计算机,通常为9000。

另一个选择是将VM配置为与其自己的localhost通信:9000(xdebug的默认值),然后从主机ssh进入VM,并为该端口建立端口隧道返回主机。 然后你的主机调试器只需连接到localhost:9000,一切都应该像在同一台机器上运行一样工作。

请参阅: 多用户XDebug和PHP调试

使用Linux + Apache + PHP + xdebug + NetBeans(SFTP)远程调试

我有以下设置,它的工作原理。

主机PC(客户端)

  • Linux Debian Jessie **
  • NetBeans 8.0.2版
  • NetBeans的项目创建为“来自远程服务器的PHP应用程序”,必须进行调试
  • NetBeans使用SFTP连接到远程服务器
  • IP(例如):192.168.0.2

**我知道OP问题提到了Windows,但是关于这个问题的主要设置应该在VM上进行,我希望无论如何这对任何人都有帮助。

来宾PC(服务器)/虚拟机

  • Linux Debian Jessie
  • 阿帕奇
  • PHP 5.6
  • xdebug 2.2.5
  • IP(例如):192.168.0.1

应在“来宾PC(服务器)/虚拟机”上执行以下步骤

  1. 安装xdebug sudo apt-get install php5-xdebug
  2. 编辑/etc/php5/apache2/php.ini

[Date]之前添加这些行并更改xdebug.remote_host以反映您的“Host PC(client)”IP:

[debug]
; Remote settings
xdebug.remote_autostart=off
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=192.168.0.2
xdebug.remote_port=9000
  1. 重启apache sudo service apache2 restart

参考

如何配置XDebug - 远程执行http://wiki.netbeans.org/HowToConfigureXDebug#Remote_Debuging

您需要在远程计算机上正确配置属性xdebug_remote.host。 必须在此属性中定义本地计算机的IP地址。 例如,您希望使用安装在192.168.0.2上的Netbeans在远程计算机192.168.0.1上调试源代码。 您需要将192.168.0.1上的xdebug.remote_host更改为xdebug.remote_host = 192.168.0.2。 如果不起作用,请验证您是否在两台计算机上的xdebug.remote_port中配置了端口。

如果一切看起来都是正确的,但你仍然可以从netbeans内部获得“Waiting For Connection”,那么你应该尝试使用php.ini设置

xdebug.remote_connect_back=on

因为它允许从任何IP连接或查看有关该问题的更多信息http://www.devside.net/wamp-server/netbeans-waiting-for-connection-netbeans-xdebug-issue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM