PHP Xdebug、VSCode、Docker & MacOS - 调试器未断开连接

PHP Xdebug, VSCode, Docker & MacOS - debugger not disconnecting

我遇到了一个奇怪的问题,似乎是在 Xdebug 扩展更新时开始出现,或者 Visual Studio 代码收到更新。

当调试器在 VSCode 中处于活动状态时,网站工作正常,停止调试器时,docker 容器中的 Xdebug 扩展似乎无法断开连接。并且网站卡在加载状态。

当调试器在 VSCode 中停止时尝试访问站点时,我在 xdebug.log 中收到以下消息。

[318] Log opened at 2022-04-08 12:19:15.819009
[318] [Step Debug] INFO: Connecting to configured address/port: host.docker.internal:9001.
[318] [Step Debug] INFO: Connected to debugging client: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port). :-)
[318] [Step Debug] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/html/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="318" idekey="VSCODE"><engine version="3.1.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2022 by Derick Rethans]]></copyright></init>

这似乎是 Xdebug 扩展仍在尝试连接(成功)到 9001 的侦听端口。

但是当用lsof -i :9001检查时,端口没有在主机上监听。

PHP Xdebug 设置:

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.remote_handler=dbgp
xdebug.idekey=VSCODE
xdebug.start_with_request=yes
xdebug.log=/tmp/xdebug.log
xdebug.client_host=host.docker.internal
xdebug.client_port=9001
xdebug.discover_client_host=0

launch.json 设置:

{
    "version": "0.2.0",
    "configurations": [{
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9001,
            "log": false,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}",
            },
            "ignore": [
                "shared/vendor/*"
            ]
        },
    ]
}

我也尝试过不同的 client_host 设置。 为 en0 接口添加了一个别名,以从 Xdebug 访问主机 IP。

sudo ifconfig en0 alias 10.128.128.128 255.255.255.0

设置的变化似乎无法消除这个问题,有人有什么想法吗?

4.8.0 版本解决了这个问题。

mac 票的 Docker:https://github.com/docker/for-mac/issues/6235

解决问题的版本:

英特尔:https://desktop-stage.docker.com/mac/main/amd64/78146/Docker.dmg

苹果硅:https://desktop-stage.docker.com/mac/main/arm64/78146/Docker.dmg