【问题标题】:PhpStorm not recognize xdebug.remote_enablePhpStorm 无法识别 xdebug.remote_enable
【发布时间】:2020-10-19 20:20:27
【问题描述】:

我正在使用 xdebug 尝试 PhpStorm,但是当我尝试验证配置时,向我显示警告:未启用远程调试,如下图所示。同样的方式 phpinfo() 显示 xdebug.remote_enable 为 Off,当然 debug 也不起作用。

php.ini xdebug 配置:

[xdebug]

zend_extension = /usr/lib/php/20180731/xdebug.so

xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xdebug/"
xdebug.remote_host = "localhost"
xdebug.remote_port=9000
xdebug.idekey="PHPSTORM"

【问题讨论】:

  • 我认为远程端口有问题,你提到了9001,而phpstorm正在寻找9000,你可以更新并再次检查吗?
  • 您必须正在编辑错误的 php.ini 文件.. 或者在单独的 .ini 文件中定义了 xdebug 设置(除了主文件之外还要进行解析)。检查phpinfo() 输出,第一个表:它包含该 PHP 安装使用的配置文件。
  • 是的,你是对的。我在编辑错误的 php.ini。从 phpinfo() 加载的配置文件中显示了正确的配置文件。谢谢!

标签: phpstorm xdebug


【解决方案1】:

在这个问题上也停留了 1 个多小时,因为错误消息不是很有帮助,有时会产生误导。

也许这很明显,但如果其他一切都失败了,请尝试以下操作:

  • 在你的项目中放置一个 phpinfo() 来读出你当前应用的 php.ini 配置
  • 打开您在 phpinfo 中“加载的配置文件”下看到的 php.ini
  • 编辑您的调试配置
  • 重启你的网络服务器(当你通过“php artisan serve”启动 Laravel 时,这似乎是必需的,至少在我的情况下)
  • 再次加载您的 phpinfo 以确认您的设置已被应用
  • 再次运行您的 PhpStorm 调试配置验证器

您的网络服务器和 PhpStorm 现在应该会选择您的新调试配置。

【讨论】:

    【解决方案2】:

    您一定是在编辑错误的 php.ini 文件。或者在单独的 .ini 文件中定义了 Xdebug 设置(除了主文件之外还要对其进行解析)。

    在 Linux 和 Mac 上,CLI 和 Web 服务器使用不同的 php.ini 是很常见的。

    检查phpinfo() 输出,顶部表格:它将显示该 PHP 安装使用的所有配置文件。

    【讨论】:

    • 我遇到了同样的问题,我可以看到 remote_host 值发生变化,所以我绝对没有编辑不正确的 php.ini 文件(从技术上讲,我正在编辑 20-xdebug.ini在/etc/php/7.2/cli/conf.d/)
    • @Scott 1) 您要调试什么:CLI 脚本或网页。 2) 请分享使用您尝试调试的相同环境捕获的整个phpinfo() 输出。 3)这是一些“静态”/传统设置..还是 Docker 容器?您最好将其作为一个新问题发布在 SO 上。
    • 我有一种感觉,要么 phpstorm 做错了什么,要么它没有正确解析值。但在我的情况下,问题原来是对实际 xdebug 流量走向的误解。我知道本地机器发出了请求,但最终找出了运行代码的一方,然后尝试“回复”到它收到请求的地址。一旦我意识到这一点,由于 NAT 前面的防火墙在此端,我不得不制定一个 janky 解决方法。 (续)
    • 我最终做的是使用我设置的 ssh 连接将本地端口 9000 (xdebug) 转发到远程计算机,同时将远程 ssh 端口 (22) 转发回本地计算机端口 10022。我启动它并保持它打开,然后我设置 PhpStorm 使用本地端口 10022 来完成它与远程的所有交互。然后远程将“localhost”视为请求机器,并与 127.0.0.1 对话,而不是我的 NAT 的公共 IP。这样响应就会通过隧道通过端口 9000 返回。
    • @Scott 对我来说这听起来像是一些误解,因此用户对 Xdebug 的配置错误。对于 CLI 模式,IDE 在执行 PHP 脚本时通过命令行传递一些 Xdebug 设置(本地/远程的值会有所不同)。然后它开始监听 Xdebug 端口(当然是本地的)。 Xdebug 在 PHP 执行代码时进入。 IDE 为 CLI 传递了“debug me”标志。连接到 IDE 的是 Xdebug,而不是其他方式(最常见的错误/假设)。
    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    相关资源
    最近更新 更多