Xdebug停止工作,我在哪里寻找错误?

时间:2012-04-01 13:34:14

标签: php ubuntu response xdebug

我安装了Xdebug,一切都很好,直到它突然停止工作。 phpinfo()为所有变量提供了一个很好的XDebug输出。

php -m | grep deb

还提供两次XDebug(对于Zend和PHP),所以再次看起来很好。我的php.ini有这些行:

zend_extension=/usr/lib/php5/20090626/xdebug.so
;extension=xdebug.so
xdebug.remote_host=localhost
xdebug.remote_enable=on
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=1

然而,当运行此代码时,应检查XDebug(来自Netbeans docs),它只是卡住了。所以没有IDE正在使用XDebug。

<?php
$address = '127.0.0.1';
$port = 9001;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die('Unable to bind');
socket_listen($sock);
$client = socket_accept($sock);
echo "connection established: $client";
socket_close($client);
socket_close($sock);

另外,根据XDebug的安装,我走了两步。我的配置有什么问题?感谢。

7 个答案:

答案 0 :(得分:13)

最后,只剩下两个解决方案 - 重新安装Ubuntu操作系统或安装新的VM,特别是xdebug,我要去第二个。 有趣的是,一切都按照“RTM”(f = freaking)工作。我无法弄清楚的一件事是如何阅读XDebug的日志以了解真正的问题所在。

更新

经过一番努力,我从每个php.ini中删除了与xdebug相关的每一行。并将这些行移至/etc/php5/conf.d/xdebug.ini。重启Apache,然后PHPStorm,它的工作原理。 附:在中间,我尝试使用pecl,github和标准的Ubuntu版本安装xdebug。我认为我编译的那个目前正在工作。并且......日志也会更新。

;xdebug configuration
zend_extension = /usr/lib/php5/20090626/xdebug.so
xdebug.remote_host = 127.0.0.1
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
xdebug.remote_log="/tmp/xdebug.log"

答案 1 :(得分:8)

在您的服务器上,尝试以下命令:

$ netstat -anp | grep CLOSE_WAIT

任何:9000个条目会给你XDebug麻烦;考虑kill -9 <pid>

答案 2 :(得分:2)

在更新php后,我在Ubuntu上也遇到了这个问题。对我来说,打开php.ini中的html错误让xbebug与Netbeans再次一起工作......

sudo vi /etc/php5/apache2/php.ini
display_errors = On
html_errors = On

然后重启apache:

sudo /etc/init.d/apache2 restart

http://ubuntuforums.org/showpost.php?p=9592364&postcount=14

答案 3 :(得分:1)

我检查了我的

  

netstat -anp

输出并发现我的远程机器[运行xDebug]上的主进程有多个打开的套接字(在XDebug端口范围内)。

  

杀死&#39;主人&#39;过程为我解决了这个问题。

对我来说就像是港口超支的情况。 认为这些信息可能对某些人有用。

答案 4 :(得分:0)

检查端口没有被占用,检查netbeans配置为监听该端口(我看到你通常有9001,9000是默认的)当我用eclipse调试时我必须每次“终止并重新启动”调试会话然后,因为它停止工作,从来没有理解为什么,我怀疑某种过期的调试会话

答案 5 :(得分:0)

检查是否将断点放到正确的文件中。查找脚本输入的第一个文件(前端控制器)。例如,在symfony上可以有多个。

答案 6 :(得分:0)

就我而言,在将 xdebug 更新到 3 版本后,我只是放置/设置了 php.ini 配置

error_reporting=E_ALL
display_startup_errors=1
display_errors=1

然后命令 php -v 显示所有警告和错误。 就我而言:

Xdebug: [Config] The setting 'xdebug.remote_enable' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_enable (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)