【问题标题】:Why are variables not showing in the debug window in PhpStorm?为什么 PhpStorm 的调试窗口中没有显示变量?
【发布时间】:2018-05-30 19:00:10
【问题描述】:

我有 Xdebug 工作,我可以在断点处停下来并单步执行。但是它已经到达的变量不会显示在“变量”窗口中。参见图片 - 变量 $test$test2 不显示。

我在 php.ini 中的配置是

[XDebug]
zend_extension = /usr/lib/php/20170718/xdebug.so
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 10000
xdebug.remote_mode = req
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.idekey = "PHPSTORM"

【问题讨论】:

  • 请显示整个调试窗口,而不仅仅是其中的一部分。
  • @LazyOne 我已经更新了图片。
  • 嗯...$test2 是可以理解的(不在任何地方使用).. 但应该列出$test。你能在一些简单的代码中重现相同的内容吗?它在另一个项目中的行为是否相同? IDE 和 Xdebug 版本? Xdebug 日志有什么要说的?如果它没有在那里列出,那么难怪 IDE 没有显示它。也许显示phpinfo() 输出的整个xdebug 部分——也许某些选项可能会有所帮助。你能评估$test当前值吗?您是如何安装当前 IDE 版本的——它是完整的安装程序还是内置更新?尝试删除 IDE 并使用完整的安装程序重新安装..
  • @LazyOne 非常感谢,我会仔细研究这些建议并报告。

标签: phpstorm xdebug


【解决方案1】:

在过去的几天里,我自己一直在用头撞桌子。在 CLI 模式下运行(例如在运行测试时)很好,但是尝试在浏览器中查看站点并让它到达断点时,我也没有看到任何本地初始化的变量。

出现的问题是 OpCache 模块。这似乎做了一些内部优化,并且变量对 Xdebug 堆栈不可见。

通过删除 PHP 模块配置中的符号链接禁用 OpCache 模块,您可以按预期看到本地变量。

我在 Docker 容器中的 Ubuntu 映像上运行最新的 PHP 7.2 (FPM)。

HTH =)

【讨论】:

  • 就是这样!!!!非常好。不要加载 opcache。我正在使用 xdebug 2.6.1 运行 docker image php:7.2-apache 并删除 opcache WORKED !!!你就是男人。
  • 最初的尝试和错误,然后发现了一些关于内部优化的信息(现在不记得在哪里)确认 opcache 是罪魁祸首:)
  • 我也可以确认,opcache 是个问题
  • 我可以确认禁用 OpCache 也可以解决问题。非常感谢。
  • 使用 Local by Flywheel 和自定义环境(无论如何 xdebug 都需要)和 vscode 中的 PHP 调试器遇到了这个问题。注释掉我网站的php.ini 中的zend_extension = /opt/php/7.3.2/lib/php/extensions/no-debug-non-zts-20180731/opcache.so 行并重新启动该网站。由于堆栈涉及的所有内容,这个问题很难追查。非常感谢!!
【解决方案2】:

我有类似的问题。碰巧php版本是7.2,但是Dockerfile为7.1版本安装了扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多