Xdebug 和 Netbeans 的问题

14

我正在尝试配置xdebug以使其与Netbeans 6.9和php 5.3配合使用。

据我所知,我已经正确地设置了xdebug。

从phpinfo页面中可以看到xdebug扩展。

我已阅读其他帖子并尝试了它们的建议,但均无效。

当我点击调试按钮时,它直接在浏览器中打开页面,并且在netbeans的底部窗格中可以看到“等待连接”的消息。

这是我的php.ini设置:

zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"

希望能得到任何帮助


网页在浏览器中加载或变成白屏没有输出? - dev-null-dweller
它只是打开我想要调试的页面。 - slier
对我来说问题是xdebug.so的路径无效。 在声明zend_extension时,请确保路径正确! - NenadP
我花了一点时间来调试,最终发现问题是当NetBeans启动Xdebug时,它会转到HTTP://LOCALHOST?XDEBUG_SESSION_START=netbeans-xdebug,而有一个htaccess文件干扰了重定向。因此将主机更改为HTTP://LOCALHOST/index.php可以使其正常工作。所以HTTP://LOCALHOST/index.php?XDEBUG_SESSION_START=netbeans-xdebug。 - ToughPal
8个回答

15

首先,检查一下它是否真的在工作,你可能没有注意到。我已经做过这个了...当我相信它不起作用时,我浪费了很多时间试图让它工作,最终发现一切都正常。

看看你的NetBeans状态栏。如果你看到" netbeans-xdebug "和" running ",那么它实际上是正常工作的。你可能已经关闭了"停在第一行"选项,并且还没有触发设置的断点(如果有的话)。这就是你看到页面上几乎没有任何迹象表明调试器实际上已连接的原因。

如果你看到"等待连接 (netbeans-xdebug)"并且进度条正在循环,则确实未连接。打开Tools|Options,并转到PHP页面。在常规选项卡中,确保 "Debugger port" 是9000, "Session ID" 是 "netbeans-xdebug"。您可能希望选中 "Stop at First Line"。我不会,因为我觉得有点烦人。我肯定会确保不选中 "Watches and Balloon Evaluation" 选项。此选项会导致NetBeans和调试器不稳定。如果需要监视,请将一个本地变量放入您需要的PHP代码中,当调试器运行时,您将在“变量”选项卡中看到它。此外,请确认项目的运行配置>索引文件中指定了文件(index.php)。

由于您在phpinfo()中看到了xdebug,因此它的末端是fine。只需确保所有值看起来合理,并且该页面上有对cookie "XDEBUG_SESSION=netbeans-xdebug" 的某些引用。(确保您没有在浏览器上关闭cookie!)

唯一需要检查的是是否有防火墙/安全程序正在运行,会阻止本地 TCP/UDP(这非常奇怪,但不排除可能性),或者端口 9000 已被其他应用程序使用。我在本地设置中使用了另一个端口号,原因不太清楚,但我确定我之所以这样做,唯一的原因就是如果我与其他东西发生了端口冲突。

最后一件事情......我们一直假设您正在同一台电脑上运行 NetBeans 和 Web 服务器。这是常见的配置,但并不是唯一的配置。如果您的 Web 服务器在另一台计算机上,请将 xdebug.remote_host=localhost 中的 localhost 改为 NetBeans 所在计算机的 IP 地址。

另外一件事情:在反复尝试的过程中,直到在 phpinfo() 中看到 xdebug 信息,请重启 Apache/PHP。在那里,请仍然在反复尝试之间重启 NetBeans。并且信不信由你,也要重启你的浏览器。


只有当我的项目目录中有index.php时,xdebug才能正常工作。如果没有index.php,它会简单地显示“等待连接”。这是一种常见的行为吗? - slier
xdebug.idekey="netbeans-xdebug" 重启Apache对我有用 :) - eddy147
我就是无法让NetBeans Xdebug正常运行。Xdebug在phpinfo()中显示良好,甚至NetBeans也可以很好地监听9000端口。但是NetBeans没有启动浏览器,直到我停止调试会话。然后它才会打开带有“?XDEBUG_SESSION_START=netbeans-xdebug”的浏览器。除了xdebug未安装的错误消息外,没有其他错误消息。我甚至删除了AppArmor,但问题仍未解决。 - iRaS
我在项目的运行时配置中添加了一个关于指定索引文件的注释。特别是在我的情况下,Drupal的略微非标准的文件夹结构迫使我导航到NetBeans理解但实际上并不正确的真正index.php的路径。结果是,从NetBeans启动Xdebug会话后,我会陷入Drupal 404页面,但与没有它不同的是,我的XDebug会话是活动的。 - texas-bronius
好的,再来一篇给那些迷失的旅人!我相信最终真正解决问题的是重新启动Chrome——不同的会话并不重要。但是一旦我重新启动了Chrome,它就立即按预期工作了。如果这是Windows,我会重新启动电脑的 ;) - texas-bronius
显示剩余4条评论

3

对我来说,这是一次变革

;xdebug.remote_enable = 0 (default value in clean XAMPP installation)

to

xdebug.remote_enable = 1

做到了!

谢谢,这解决了我的问题。值得注意的是,这行代码要放到php.ini文件中。 - cad

1

对我来说,添加一个index.php就解决了问题。


4
你能详细说明一下吗? - Manachi

0
当我尝试在Netbeans中调试由PHP后端驱动的Yeoman WebApps时,状态一直显示“等待连接”。这可能是因为index.html根本与php无关。只有当我触发需要PHP处理的ajax时,与xdebug的连接立即连接并像往常一样进行调试。希望这能给某人提供另一个视角,因为我曾经被“认为”存在问题并尝试修复ini所困扰。

0

0

刚升级到新的Ubuntu 14.4后,我的NetBeans Xdebug停止工作了。我迄今为止已经按照以上所有答案进行了尝试,但都无济于事。

我找到了一个NetBeans Ubuntu声明,即/etc/php5/cli/conf.d/xdebug.ini文件应该具有xdebug.remote_enable=on。当我检查/etc/php5/cli/conf.d目录时,我发现没有xdebug.ini文件。不过,那里有一个指向/etc/php5/mods-available/xdebug.ini的链接。 随后将xdebug.remote_enable=on添加到该文件中即可解决问题。

PS-此方法适用于NetBeans 8.0.1


0
我一直不明白为什么我的一些项目可以连接调试器,而另一些则不能。后来我意识到那些无法连接的项目都是以 index.html 开头的。一旦我将这些文件重命名为 index.php,调试器就可以顺利连接了。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接