使用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。在项目Run配置中,我有以下内容:

  • 运行方式:本地web服务器
  • 项目URL: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远程工作吗?感谢

对不起,我不能再发表评论了@大卫@JamesB41:我也一直在找这个。我的设置是一个带有NetBeans 7.1的Windows7主机,以及VirtualBox中的Ubuntu虚拟机。我将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/

In知道这是旧的,但这是一个很好的提醒。如果您在virtualbox中使用nat,请确保将xdebug端口上的端口转发设置回本地机器,默认情况下通常为9000。

另一个选项是将虚拟机配置为与自己的localhost:9000(xdebug的默认值)通信,然后通过ssh从主机到虚拟机,并为该端口建立一个返回主机的端口隧道。然后,您的主机调试器只需连接到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上进行,我希望这无论如何都能帮助到一些人。

访客电脑(服务器)/虚拟机

  • Linux Debian Jessie
  • Apache
  • PHP 5.6
  • xdebug 2.2.5
  • IP(例如):192.168.0.1

应在"访客PC(服务器)/虚拟机"上执行以下步骤

  1. 安装xdebug sudo apt-get install php5-xdebug
  2. 编辑CCD_ 3

[Date]之前添加这些行,并更改xdebug.remote_host以反映您的"主机PC(客户端)"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

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

如果一切似乎都是正确的,但你仍然从netbeans内部得到"等待连接",你应该在php.ini设置中尝试

xdebug.remote_connect_back=on

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