无法解析外部 Xdebug 连接的服务器名称

Cannot parse server name for external Xdebug connection

我有一个带有 xdebug 的 Docker 容器,当我 运行 我需要形成 Docker 容器的脚本时,我从 PhpStorm 收到以下消息:

Cannot parse server name for external Xdebug connection.
To fix it create environment variable PHP_IDE_CONFIG on the remote server.
Windows: set PHP_IDE_CONFIG="serverName=SomeName"
Linux / Mac OS X: export PHP_IDE_CONFIG="serverName=SomeName".

但我已经设置了这些环境变量,您可以在此处的屏幕截图中看到:

xdebug.log

这是我 phpinfo() 的 xdebug 部分:

这些是我对 PhpStorm 的设置:

来自 phpinfo() 的环境:

PHP 来自 phpinfo() 的变量:

我也尝试 export env 带引号和不带引号的变量,但结果是一样的...

带引号:

XDEBUG_CONFIG="remote_host=192.168.1.110"
PHP_IDE_CONFIG="serverName=docker-server"

没有引号:

XDEBUG_CONFIG=remote_host=192.168.1.110
PHP_IDE_CONFIG=serverName=docker-server

来自我的 MacOS 运行ning Docker 和 PhpStorm

ifconfig en1 inet 命令的结果

您还可以在需要时查看以下文件:

任何帮助将不胜感激!

更新:

似乎如果我添加

environment:
  XDEBUG_CONFIG: "remote_host=192.168.1.110"
  PHP_IDE_CONFIG: "serverName=docker-server"

进入我位于 docker-compose.yml 内的 php 服务,它解决了问题,但给我留下了一个大问题。

因为我有:

env_file:
  - ./etc/environment.yml
  - ./etc/environment.development.yml

./etc/environment.development.yml里面我有:

XDEBUG_CONFIG="remote_host=192.168.1.110"
PHP_IDE_CONFIG="serverName=docker-server"

并且因为它没有被忽略,而且我可以看到那些环境变量甚至在我将 environment 属性 添加到我的 php 服务之前就已设置,为什么 xdebug 仅在以下情况下触发我设置了environment属性?把它放在两个地方对我来说感觉像是重复,我更喜欢把它放在 ./etc/environment.development.yml 而不是 docker-compose.yml.

经过更多的挖掘,

我看到了以下区别:

当我使用 env_file 指令时,我的 environment.development 文件中有以下内容:

XDEBUG_CONFIG="remote_host=192.168.1.110"
PHP_IDE_CONFIG="serverName=docker-server"

结果是:

注意值周围的双引号。

当我删除 env_file 指令并放置以下内容时:

environment:
  XDEBUG_CONFIG: "remote_host=192.168.1.110"
  PHP_IDE_CONFIG: "serverName=docker-server"

然后我在 phpinfo() 中得到了这个:

所以最后我所做的是,我删除了 environment 指令并放回 env_file 指令,在 environment.development 文件中我删除了值周围的双引号,所以现在看起来像这样:

XDEBUG_CONFIG=remote_host=192.168.1.110
PHP_IDE_CONFIG=serverName=docker-server

现在一切正常:)

我在 PhpStorm youtrack 里填了一个bug report

我对双引号有同样的问题,但在 docker-compose 中。第一个版本是错误的,删除双引号解决了它:

    environment:
      - PHP_IDE_CONFIG="serverName=local"
      - PHP_IDE_CONFIG=serverName=local