【问题标题】:Xdebug one applications triggers debug connection from other?Xdebug 一个应用程序触发来自其他应用程序的调试连接?
【发布时间】:2021-12-11 06:36:39
【问题描述】:

我的机器上有两个独立的 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 才会触发调试启动(如预期的那样)。

您有什么想法吗?对于浏览器,我使用带有 Xdebug 扩展的 Chrome。

【问题讨论】:

  • app-b,你有Ignore external connections through unregistered server configurations enabled吗?触发调试会话的不是 PhpStorm,它们启动是因为您的服务器看到了调试 cookie。除非您启用了此选项,否则我看不出app-b 会忽略来自localhost:8083 的调试会话的任何原因。
  • @EugeneMorozov no 该选项被禁用,就像在屏幕截图中一样。配置会根据我打开的项目而改变吗?我检查了 app-b 和 app-a,它们都具有相同的配置,并且“服务器”为空。
  • @EugeneMorozov 我刚刚再次对其进行了测试,似乎app-b 确实有效。我的问题是我无法调试app-a
  • @Adam 启用 Xdebug 日志,尝试调试并查看它的内容。然后将同一日志与工作项目进行比较。你看有什么不同吗?这是你现在的起点。在不知道它是如何设置的情况下,很难提出任何建议。
  • @EugeneMorozov 启用了Ignore external connections through unregistered server configurations 确实会阻止 app-a 在 app-b 处启动调试。这是因为我没有启用它:D

标签: laravel phpstorm xdebug


【解决方案1】:

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

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

 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'

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多