Xdebug与PHPStorm无法配合使用

8
我使用PHPStorm和Xdebug来逐步调试我的代码。 PHPStorm运行在Windows 7机器上,我的本地Web服务器运行在另一台CentOS 6.4机器上。 我已经执行了phpinfo();以验证PHP是否加载了Xdebug,确实加载了。以下是我在PHP.ini中对Xdebug的设置:
[xdebug]
zend_extension="/usr/lib/php/modules/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = "192.168.1.130"
xdebug.remote_log = "/var/log/httpd/xdebug_log"
我同样设置了PHPStorm使用我的CentOS服务器作为调试服务器,并监听连接。我为这两台机器分配了静态IP。我使用Chrome Xdebug插件设置相应的Cookie,尝试设置断点,但没有任何反应。当我查看/var/log/httpd/xdebug_log(具有777权限)时,什么也没有写入。我已打开端口9000,我可以在我的CentOS机器上通过telnet轻松地返回到Windows机器的9000端口。我还将SELinux设置为宽容模式,但无济于事。
这里是否有任何想法?

1
如果您的xdebug_log文件中什么都没有...那么xdebug根本没有收到调试请求(cookie/get/post参数等)。您可以通过xdebug_break();强制进入调试模式,或者使用xdebug.remote_connect_back = 1xdebug.remote_autostart = 1(详细信息请参见文档)。 SELinux肯定会引起问题(在这方面不是专家)。无论如何,也请查看这个链接:http://blog.jetbrains.com/phpstorm/2013/07/webinar-recording-debugging-php-with-phpstorm/ - LazyOne
我尝试了你的建议,但仍然没有运气。当我调用xdebug_var_dump()xdebug_is_enabled()时,我得到的值表明xdebug正在工作。然而,PHPStorm没有连接。我已经四次检查了我的远程服务器设置,并且可以百分之百地告诉您它们是正确的。 - Dave
我对自己摇头不已...我重新启动了CentOS,现在一切都正常了。唉,我真的需要开始听从自己的建议,在浪费你们时间之前尝试重新启动 ;-) - Dave
这不是浪费时间,而是解决问题的有效方法,也是始终“检查插头”的重要提醒。 - nick fox
5个回答

11

尝试在PhpStorm中配置您的项目

  1. 打开设置 -> 语言和框架 -> PHP -> 调试
  2. 取消选中“忽略通过未注册服务器配置的外部连接”选项
  3. 确定

请您在这个答案中加上一个“为什么这样做有效”的解释吗? - Christopher Thomas
复选框“忽略未注册服务器配置的外部连接”意味着您要调试的本地网站的域名必须列在PHP -> 服务器(在phpstrom配置中)。如果没有,则您的网站将被PhpStorm忽略。 - Jekis

4

在您的 php.ini 文件中添加以下内容:

xdebug.mode=debug


3

我曾经遇到同样的问题,以下是我采取的步骤来解决它:

  1. 确保您已安装xdebug,并在php.ini中取消注释xdebug.mode=debug
  2. 打开“设置”->“语言和框架”->“PHP”->“调试”,分配调试端口值,您可以从php.ini中找到此端口。在我的情况下,它是9002
  3. 现在验证调试器配置-在这里,您需要添加您的Web应用程序文件和URL的路径。点击验证。
  4. 现在开始监听->启用监听PHP调试连接。

设置完成后,您可以设置断点并使用XDEBUG进行调试。


0
sudo gedit /etc/php/7.2/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_port = 9898
xdebug.idekey = “PHPSTORM”
xdebug.show_error_trace = 1
xdebug.remote_autostart = 0
xdebug.mode=debug
xdebug.client_port=9898

虽然这段代码可能回答了问题,但是提供关于为什么和/或如何回答问题的额外上下文可以提高其长期价值。 - Donald Duck

0
在我的情况下,我将正在调试的文件夹添加到了排除列表中,因此当我设置断点时,它会返回502或空白页面。移除排除列表中的文件夹后,一切正常。
您可以考虑查看这篇博客以获取更多解决方案:链接

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