在 PhpStorm 中调试 CLI PHP 脚本,无法建立与 Xdebug 2.6.0 的连接

Posted

技术标签:

【中文标题】在 PhpStorm 中调试 CLI PHP 脚本,无法建立与 Xdebug 2.6.0 的连接【英文标题】:Debug CLI PHP script in PhpStorm, cannot establish connection to Xdebug 2.6.0 【发布时间】:2018-07-31 18:08:15 【问题描述】:

我正在尝试在 phpStorm 中运行 CLI 脚本并使用调试器单步执行。

花了一些时间,但我现在安装了 Xdebug,并且 PhpStorm CLI 解释器对话框确认:

我创建了一个运行/调试配置,当我尝试执行/调试它时,脚本一直运行而不会在我的断点处中断,并且我在 PhpStorm 的底部收到此错误:

PhpStorm 文档说用于 CLI 脚本的 xdebug 可以配置如下环境变量:

export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_port=9000 remote_host=127.0.0.1 remote_connect_back=0"

我已经确认 PhpStorm 可以看到该环境变量:

这是我的运行/调试配置:

我在这里完全不知所措。我怎么能得到这个东西来调试 CLI php 脚本?任何帮助表示赞赏。

【问题讨论】:

1) "...无法建立与 xdebug 2.6.0 的连接" Xdebug 连接到 PhpStorm 而不是其他方式。 2) 您在 Mac 上并为 Xdebug 使用默认的 9000 端口。问题是——你可能在你的 Mac 上运行了 php-fpm……默认情况下它也使用那个端口……而且 Mac 上的 PhpStorm 无法检测到 Xdebug 端口已经在使用中。您可以使用sudo lsof -nP -iTCP -sTCP:LISTEN 检查哪个应用程序正在侦听 TCP 9000。建议的解决方法是在 php.ini 和 PhpStorm 设置中将 Xdebug 端口更改为 9001。 3) “PhpStorm 文档说用于 CLI 脚本的 xdebug 可以使用这样的环境变量进行配置:” 如果您从 PhpStorm 执行 Debug ...它将通过所有PHP 可执行文件所需的参数以及脚本的路径。仅当您从 IDE 外部启动脚本并且 PhpStorm 仅侦听传入连接时,才可能需要此类配置。 @LazyOne 感谢您的帮助,但事实证明这与调试完全无关。布雷格。 【参考方案1】:

啊,当我花了几个小时试图修复某些东西并发现它完全无关时,我讨厌它。

问题是我使用的是短标签,而我的 cli php.ini 文件有 short_open_tag=Off。我正在运行的代码通常在 Web 上下文中运行,并且该 Web 上下文的 php.ini 具有 short_open_tag=On,因此代码可以正常工作。

此代码是一个 api 端点,我需要能够单步执行并查看发生了什么,并且没有什么本质上需要它在 Web 上下文中运行(除了输入参数,但我在伪造那些无论如何用于测试目的)。

所以,我的调试配置很好。

我通过尝试进一步减少问题来发现它,我只是尝试直接从命令行 (php sync.php) 运行代码,以查看它至少可以正常工作并产生正确的输出。

它没有产生正常的 api json 输出,它只是在回显文件中的所有代码。这就是让我意识到我的愚蠢错误的原因。

【讨论】:

以上是关于在 PhpStorm 中调试 CLI PHP 脚本,无法建立与 Xdebug 2.6.0 的连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 HTML 表单,如何使用正确的 GET/POST 数据开始调试操作 PHP 脚本? (使用 PhpStorm 和 XAMPP)

使用 xdebug 和 netbeans 调试 php-cli 脚本?

使用 PhpStorm 在 Homestead 环境中调试 PHPUnit 测试

PhpStorm+Xdebug配置单步调试PHP

PHP 设置调试工具XDebug PHPStorm IDE

php7调试怎么在phpstorm中设置