nginx php-fpm xdebug netbeans 只能启动一个调试会话

2023-12-27

过去我用过阿帕奇+mod_php+xdebug+netbeans 用于开发我的网站(服务器是我的本地计算机,运行 Debian Squeeze),很高兴 - xdebug 按预期工作,调试会话可以在我需要时随时启动和停止。但是,当我搬到nginx+php fpm+xdebug+netbeans 我在调试时遇到了一些问题。

  1. 我的调试会话可能是很长(远远超过 30 秒)并且看起来,nginx 等不了这么久,它表明“504 网关超时错误”。我已经尝试了很多建议来解决这个问题,但没有运气。不过,这对我来说并不是很重要,因为调试会话本身会继续运行,这只是有点不舒服的事情。
  2. 我的调试会话只能运行一次,因此,如果我停止它,并尝试再次启动调试,netbeans 无法接受来自 xdebug 的连接(它会写“等待 xdebug 连接”,并且永远如此)。重新启动 netbeans 后,调试会话可以再次正常启动。
  3. 在某些情况下,我无法理解,调试是“为所有 php 脚本打开”并阻止任何其他脚本运行。例如,我在我的网站上启动调试会话http://mysite.local/index.php http://mysite.local/index.php并与之合作。一段时间后,我注意到,我的adminer(放置在 Intranet.local/adminer.php 上)不运行,浏览器尝试加载页面一段时间,然后显示“504 网关超时错误”。如果我看到这种行为,我可以停止 netbeans 中的 xdebug 调试会话,并且所有其他脚本开始正常运行。

现在,当我写这个问题时,我做了一些调查,发现如果我启动调试会话几秒钟,然后停止它,然后再次启动 - 它会正常启动。看来问题是在积极调试一段时间后出现的。

我的系统和应用程序: Debian 挤压:2.6.32-5-686 Nginx:1.4.1(来自 dotdeb 存储库) php5-fpm:5.3.26-1~d(来自 dotdeb 存储库) php5-xdebug:5.3.26-1~d(来自 dotdeb 存储库) 网豆:7.3

我的配置:

  1. nginx 基本配置:https://gist.github.com/MihanEntalpo/6229801 https://gist.github.com/MihanEntalpo/6229801
  2. nginx 网站配置文件:https://gist.github.com/MihanEntalpo/6229781 https://gist.github.com/MihanEntalpo/6229781
  3. fastcgi_params 文件:https://gist.github.com/MihanEntalpo/d93fd4105573e1eda56f https://gist.github.com/MihanEntalpo/d93fd4105573e1eda56f
  4. php-fpm 池配置文件:https://gist.github.com/MihanEntalpo/6229820 https://gist.github.com/MihanEntalpo/6229820
  5. php-fpm xdebug 配置文件:https://gist.github.com/MihanEntalpo/6229836 https://gist.github.com/MihanEntalpo/6229836
  6. netbeans: options, that was just the same with apache server:
    • 第一行中断 = OFF
    • 弹出窗口中的评估 = ON
    • 显示请求 URL = 开
    • 端口 = 9000

当 nginx 无法等待正在调试的脚本或其他脚本被前面提到的问题 #3 锁定时,记录在 nginx 的错误日志文件中:

2013/08/14 14:40:16 [错误] 4822#0: *111 上游超时(110: 连接超时),同时从上游读取响应头,客户端:192.168.100.1,服务器:intranet.local,请求: “GET /adminer.php?username=root&db=devel&table=user HTTP/1.1”,上游:“fastcgi://127.0.0.1:9999”,主机:“intranet.local”,引用者:“"

php-fpm 的日志不包含任何错误消息...

我不喜欢用自己的问题去打扰任何人,总是尝试自己解决问题。但在这种情况下,我和这些人战斗了几个月,但运气不佳...... 如果有人遇到这个问题,或者有与 nginx+php-fpm+xdebug+netbeans 一起使用的工作配置 - 请帮助我:)


谢谢你们,所有试图从我的问题的角度思考的人。 我已经成功解决了。

  1. 第一个问题(504错误)可以通过nginx选项解决fastcgi_read_timeout,例如,它可以是fastcgi_read_timeout 600;告诉 nginx 它应该等待 600 秒。它应该被放置到主机的配置文件中,或者 /etc/nginx/fastcgi_params (在 Debian 中)
  2. 第二个问题是由我的 xdebug.conf 中的选项引起的:xdebug.remote_autostart=1;, 它应该是xdebug.remote_autostart=0;。我不明白这个选项的真正含义,但它确实如下:任何 php 脚本自动尝试连接到调试器(在我的例子中是 netbeans)。因此,在某些情况下,netbeans 丢失连接,当我按“开始调试”时,它不知道应该打开新连接,并永远等待 xdebug 客户端。现在,通过上述选项,我可以在需要时随时启动和停止调试。
  3. 第三个问题与第二个问题的来源相同。在我的服务器上运行的所有其他脚本都尝试连接到 netbeans,但由于连接丢失,这是毫无意义的。

无论如何,我希望这对想要解决类似问题的人有所帮助。 StackOverflow 帮助我强迫我明确地描述我的问题,在这个过程中我获得了关于尝试什么的新想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx php-fpm xdebug netbeans 只能启动一个调试会话 的相关文章

随机推荐