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


Xdebug stopped working, where do I look for errors?

我安装了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

然而,当使用should check XDebug(来自Netbeans文档)运行此代码时,它只是卡住了。因此,没有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的安装,我完成了两次步骤。我的配置出了什么问题?谢谢

最后,我只剩下两个解决方案——重新安装Ubuntu操作系统或安装一个新的虚拟机,特别是为xdebug安装,我选择第二个。有趣的是,一切都按照"RTM"(f=怪异)进行。有一件事我想不通,那就是如何读取XDebug的日志,以了解真正的问题在哪里

更新

经过一番努力,我从我拥有的每一个php.ini中删除了与xdebug相关的每一行。并将这些行移到/etc/php5/conf.d/xdebug.ini。重新启动Apache,然后启动PHPStorm,它就工作了。顺便说一句,在中间,我尝试从github和标准的Ubuntu版本安装带有pecl的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"

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

$ netstat -anp | grep CLOSE_WAIT

任何:9000个条目都会给XDebug带来麻烦;考虑CCD_ 2。

更新php后,我在Ubuntu上也遇到了这个问题。对我来说,打开php.ini中的html错误可以让xdebug和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&后计数=14

我检查了

netstat-anp

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

杀死"大师"进程为我解决了问题。

对我来说,这似乎是一个港口超载的情况。我觉得这些信息可能对一些人有用。

检查端口是否被占用,检查netbeans是否被配置为侦听该端口(我看到你通常有9001,9000是默认值)。此外,当我使用eclipse进行调试时,我必须不时"终止并重新启动"调试会话,因为它停止了工作,我从未低估过为什么,我怀疑某种过期的调试会话

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

在我的情况下,在将xdebug更新到3版本后,我只放入/设置php.ini配置

error_reporting=E_ALL
display_startup_errors=1
display_errors=1

然后命令CCD_ 3显示所有警告和错误。就我而言:

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)