9

我在 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 进一步与调试器引擎交互(例如,收集性能数据或使用其他扩展命令)。

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

会不会是服务器配置的问题?

4

6 回答 6

6

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

extension=php_xdebug-...

这条线是如何创建的。

您将 xdebug 的文件放入 PHP 扩展路径中,如下所示

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

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


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

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

它将使 Xdebug 从任何 _AMP 工具中隐藏。

并更正您的 zend_extension 参数。

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

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

这是它的常见默认路径。


请记住!
对于 PHPStorm、Eclipse、Zend 等,您可能应该考虑更正两个 php.ini 文件。

第一个用于您的 Web 服务器。通常在 Apache 文件夹下

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

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

...\php\php5.X.XX\
于 2015-02-03T21:26:32.977 回答
3

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

于 2015-08-03T11:05:56.053 回答
1

我在 Windows 下遇到了同样的问题,使用 phpstorm,我在谷歌上搜索了很多次。最终,我的决定是:

php.ini

xdebug.remote_mode = "jit"

来自 phpstorm 教程,JIT - “Just-In-Time” 模式

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

UPD

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

我将 phpstrom 用于 win 7,并以这种方式配置路径映射

d:\serverroot\vhost\www=>d:\serverroot\vhost\www

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

d:\serverroot\vhost\www=>d:/serverroot/vhost/www

最后

在服务器配置中路径映射中的 Windows 机器上,替换\/

于 2016-09-06T22:28:40.370 回答
0

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

于 2013-07-03T09:02:50.763 回答
0

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

于 2019-10-07T23:02:05.233 回答
0

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

于 2019-10-03T03:21:21.520 回答