laravel - Xdebug 一个应用程序触发来自其他应用程序的调试连接?
问题描述
我的机器上有两个独立的 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 时,调试突然开始了?为什么一个应用程序会触发我的另一个应用程序的调试?
app-b
当我使用 PhpStorm打开文件夹时,只有 localhost:8083 才会触发调试启动(如预期的那样)。
任何想法这是怎么可能的?对于浏览器,我使用带有 Xdebug 扩展的 Chrome。
解决方案
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'
添加这些条目以及浏览器中的调试插件使调试工作。
推荐阅读
- python - 如何按字典的值对字典进行排序
- xpath - Xpath is correct but no result after scraping
- reactjs - Creatable in React-Select and Typescript fails with error
- c# - Linq Join does not seem to have data of the complete join
- swift - 尝试更改个人资料照片时应用程序崩溃
- oracle - 在游标中使用 for 循环和别名检索变量
- javascript - 为什么我的 JavaScript 代码只在第二次点击时执行?
- c++ - 新建一个像 60000*60000 这样非常大的一维数组
- kubernetes - 如果文件没有更改,如何重新部署(滚动更新)kubernetes 部署
- node.js - 在 DynamoDB 上扫描表的正确方法是什么?