Xdebug - 命令不可用

时间:2013-07-03 07:05:57

标签: xdebug phpstorm

我在PhpStorm远程调试我的项目。 IDE显示“已连接”片刻并立即进入“等待传入连接...”

以下是本次会议的Xdebug日志

I: Connecting to configured address/port: X.x.x.x:9000.
I: Connected to client. :-)
> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///xxx/info.php" language="PHP" protocol_version="1.0" appid="4365" idekey="10594"><engine version="2.2.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATAhttp://xdebug.org]></url><copyright><![CDATA[Copyright (c) 2002-2013 by Derick Rethans]]></copyright></init>

<- feature_set -i 0 -n show_hidden -v 1
> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="0" feature="show_hidden" success="1"></response>

<- feature_set -i 1 -n max_depth -v 1
> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>

<- feature_set -i 2 -n max_children -v 100
> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1"></response>

<- status -i 3
> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="3" status="starting" reason="ok"></response>

<- step_into -i 4
> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="stopping" reason="ok"></response>

<- breakpoint_set -i 5 -t line -f file://xxx/info.php -n 3
> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5"><error code="5"><message><![CDATA[command is not available]]></message></error></response>
"

根据Xdebug文档状态“停止”是 '完成代码执行后的状态。这通常发生在代码执行结束时,允许IDE进一步与调试器引擎交互(例如,收集性能数据,或使用其他扩展命令)。'

所以我的调试器在到达第一个断点之前停止(在第一行设置)。

这可能是服务器配置的问题吗?

6 个答案:

答案 0 :(得分:5)

你应该去php.ini并删除像这样的行

extension=php_xdebug-...

这条线是如何创建的。

您将xdebug的文件放入PHP扩展路径中,就像这样

.../php5.X.XX/ext/

现在您可以通过任何_AMP UI工具(如WAMP,XAMPP等)打开此PHP扩展。


为了防止这种痛苦的不幸,您必须将Xdebug文件放入

.../php5.X.XX/zend_ext/

它会使任何_AMP工具隐藏Xdebug。

并更正你的zend_extension参数。

zend_extension = .../php5.X.XX/ext/php_xdebug-...

zend_extension = .../php5.X.XX/zend_ext/php_xdebug-...

它的常见默认路径。


请记住!
使用PHPStorm,Eclipse,Zend等,可能你应该考虑纠正两个php.ini文件。

您的网络服务器的第一个。通常在Apache文件夹下

...\Apache2.X.XX\bin\

第二个用于直接PHP脚本调试。它位于PHP主机文件夹中:

...\php\php5.X.XX\

答案 1 :(得分:2)

在我的情况下,“breakpoint_set”/“command is not available”问题的原因已被禁用xdebug.extended_info选项(默认情况下已启用,但我已将其禁用以进行性能分析)。<登记/> 断点不起作用,然后xdebug.extended_info被禁用 重新启用xdebug.extended_info后,我有断点工作。

答案 2 :(得分:1)

我在windows下有同样的问题,有了phpstorm,我在google上很多次了。最终,我的决定是:

php.ini中的

:     

xdebug.remote_mode = "jit"

从phpstorm教程,JIT - “即时”模式

https://www.jetbrains.com/help/phpstorm/2016.2/configuring-xdebug.html#d43035e303

UPD

不,这个选项实际上并没有帮助我。但是,我最终解决了我的问题:

我使用phpstrom获胜7,我用这种方式配置路径映射

d:\serverroot\vhost\www =&gt; d:\serverroot\vhost\www

但在我的旧配置中我发现了这样的映射:

d:\serverroot\vhost\www =&gt; d:/serverroot/vhost/www

最后

在服务器配置中的路径映射中的Windows计算机上,用 \

替换 /

答案 3 :(得分:0)

我认为发生这种情况的唯一原因是你的info.php有语法错误。在这种情况下,没有代码可以执行,并且脚本在发出“step_into”时直接“停止”。

答案 4 :(得分:0)

Zend_Opcache / OPCache也可能导致此问题,如果已启用,请尝试将其禁用。

答案 5 :(得分:0)

将XDebug扩展编译为PHP运行时的非调试版本时,可能会发出此错误。该过程不会失败(应该不会失败),但是XDebug扩展将在该过程中停止执行任何操作