【发布时间】: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;被注释掉了,这是导致问题的原因,它现在可以工作了,谢谢