【问题标题】:PhpStorm: Cannot evaluate expression '$_SERVER['SERVER_PORT']'PhpStorm:无法评估表达式 '$_SERVER['SERVER_PORT']'
【发布时间】:2016-12-15 21:30:37
【问题描述】:

我正在使用运行 PHP 7.1 (php-fpm) 和 Nginx 的 Docker 容器。我已经安装并启用了 Xdebug 2.5.0(如下图所示)。

我正在尝试使用“零调试配置”使用这行代码调试单个 index.php 文件:

<?php
    phpinfo();

但我收到以下错误:

无法接受外部 Xdebug 连接:无法评估表达式 '$_SERVER['SERVER_PORT']'

我搜索了类似的问题,并找到了this,但到目前为止没有任何帮助。

这里是 Debug 相关的 PhpStorm 配置:

我不确定这里出了什么问题,所以我需要一些帮助。包含 Dockerfile 等的存储库是 here。我正在使用以下版本的 PhpStorm:

PhpStorm 2016.3.2 EAP
Build #PS-163.10154.2, built on December 13, 2016
JRE: 1.8.0_112-release-408-b2 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

有人可以帮我吗?我在此设置中缺少什么?

【问题讨论】:

  • "$_SERVER['SERVER_PORT']" 这是一个新的 - 以前没有见过端口问题。您的 nginx 配置很可能不完整(未正确配置)。请检查$_SERVER['SERVER_PORT'] 在您的phpinfo() 输出中显示的内容(通过浏览器捕获)。 P.S. 如果您不使用 DBGp 代理设置,请勿触摸它们。
  • 我不是 nginx 专家(从未使用过).. 但这条线 可能 是导致问题的原因:github.com/reypm/another-lamp-docker/blob/master/php-fpm/…(编辑:实际上 - 不是这个line .. 但这个想法是相似的——见下一句)。在任何情况下——SERVER_PORT 变量应该存在于$_SERVER 中,并且端口号应该与您正在使用的端口号匹配。
  • @LazyOne 我遇到了另一个问题,我不确定我搞砸了什么。在Dockerfile,我公开端口9001,然后在docker-compose.yml,我将端口从容器映射到主机,如下所示:9002:9001,然后一旦我尝试在 phpStorm 中启动调试会话,我最终出现此错误:Can't start listening for connections from 'xdebug': Port 9002 is busy,为什么?我在这里想念什么?
  • 不是 Docker 用户 .. 但从我读过的所有手册中——你不应该暴露这些端口——该端口 IDE 将用于本地监听——它将是 xdebug连接到 IDE 而不是其他方式。通过将其暴露在 Docker 中(这样您就可以从主机连接到容器中)......您可以防止 IDE 监听该端口。
  • @LazyOne 你说得对,我刚刚发现这个 fastcgi_param SERVER_PORT $server_port; 被注释掉了,这是导致问题的原因,它现在可以工作了,谢谢

标签: php nginx phpstorm xdebug


【解决方案1】:

这是因为您使用的是 unix: socket 而不是 TCP 协议。 重新配置 PHP-FPM 和 NGINX 以使用 TCP

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多