Xdebug 一个应用程序触发来自其他应用程序的调试连接?

Xdebug one applications triggers debug connection from other?

我的机器上有两个独立的 Laravel 8 应用程序。 我在 .env 中设置 SAIL_XDEBUG_MODE=develop,debug 并使用 no-cache 标志构建容器。

这些是我的 PHP/DEBUG 条目:

“PHP | 服务器”没有条目。

这是我无法向自己解释的最奇怪的事情:

一个容器正在侦听端口 localhost:89(文件夹 app-a),另一个容器正在侦听 localhost:8083(文件夹 app-b)。

当我用 PhpStorm 打开项目文件夹 app-a 并在 index.php 处设置断点并启用侦听调试连接时,当我打开 localhost:89 时没有任何反应。但是,当我打开 localhost:8083 时,调试突然开始了? 为什么一个应用程序触发了我的另一个应用程序的调试?

当我用 PhpStorm 打开文件夹 app-b 时,只有 localhost:8083 触发了调试启动(如预期的那样)。

知道这怎么可能吗?对于浏览器,我使用 Chrome 和 Xdebug 扩展。

app-b 导致 app-a 调试的问题是因为我禁用了 Ignore external connections through unregistered server configurations。启用此选项可以防止这种情况。

localhost:89 没有初始化调试会话的原因是我的 Laravel 设置。我最初使用的是 Laravel 8 的旧版本(虽然我更新到最新版本,但 docker-compose 文件是从旧版本的 sail 复制的)。特别是,我遗漏了以下条目:

 environment:
     WWWUSER: '${WWWUSER}'
     LARAVEL_SAIL: 1
     XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
     XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-  client_host=host.docker.internal}'
extra_hosts:
     - 'host.docker.internal:host-gateway'

添加这些条目以及浏览器中的调试插件使调试工作顺利进行。