我在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进一步与调试器引擎交互(例如,收集性能数据,或使用其他扩展命令)。'
所以我的调试器在到达第一个断点之前停止(在第一行设置)。
这可能是服务器配置的问题吗?
答案 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
不,这个选项实际上并没有帮助我。但是,我最终解决了我的问题:
我使用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扩展将在该过程中停止执行任何操作