我正在尝试正确设置 Xdebug。使用这些设置,当我访问任何页面时,我会在 30 多秒后收到 504 超时错误。 (我使用的是 ssh - 隧道,所以我使用remote_host 127.0.0.1)
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = req
xdebug.remote_host = 127.0.0.1
xdebug.remote_log = /home/ubuntu/xdebug-cgi.log
xdebug.idekey = "rsalazar"
xdebug.remote_port = 9000
一旦我能够获得此 xdebug 日志输出,由于某种原因,它不再发布此输出:
> Log opened at 2012-03-23 22:13:50 I: Connecting to configured
> address/port: 127.0.0.1:9000. I: Connected to client. :-)
> -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
> fileuri="file:///home/ubuntu/www/info.php" language="PHP"
> protocol_version="1.0" appid="3119" idekey="rsalazar"><engine
> version="2.2.0rc1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick
> Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>
有什么想法吗?
编辑:我已经确定它仅在我在页面上启用调试时发生(当然,当我打开“remote_autostart”时总是发生)...我想猜测 xdebug 正在等待服务器连接(?)
您是否在路由器中打开了端口 9000?在我打开入站和出站流量的端口之前,我遇到了完全相同的问题。
我也有同样的问题。我注意到,只要我使用 sudo service apache2 reload 重新加载 apache,测试 php 脚本就可以绑定到端口 9000 处的套接字。这暗示 php 没有保持端口打开或在 apache 启动后继续侦听。如果我发现什么,我会发布更多内容。
如果您的 PHP 通过 PHP-FPM 等代理运行,则当底层 PHP 进程被调试器停止时,代理可能会报告超时。在这种情况下,您仍然可以逐行调试和运行代码,但输出永远不会到达请求的代理和客户端。也许在 PHP-FPM 配置中增加超时值可能会有所帮助。