Docker 中的 Xdebug CLI

vik*_*iko 9 xdebug phpstorm docker

我在 GitHub 和 StackOverflow 上读了很多帖子,但没有找到答案。

我有带有 PHP 7.4 和 Xdebug 3 的 Docker 容器。IDE 是 PhpStorm。当我在浏览器中使用 Xdebug 时,Xdebug 工作正常。但是当我在容器中使用 PHP CLI 时,Xdebug 不起作用。

xdebug.ini:

zend_extension=xdebug.so

[xdebug]
xdebug.mode = debug
xdebug.client_port = 9003
xdebug.discover_client_host = 1

xdebug.remote_log=/var/log/xdebug.log
Run Code Online (Sandbox Code Playgroud)

我从容器连接 bash:docker exec -it CONTAINER_NAME bash 并运行例如:bin/console my:command(Symfony)。没有结果,当我添加到配置时xdebug.start_with_request = yes,我可以看到警告:

Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (fallback through xdebug.client_host/xdebug.client_port) :-(
Run Code Online (Sandbox Code Playgroud)

看起来容器无法与我的主机系统连接,其中 PhpStorm 开放了 9003 端口。但是当在网络服务器上使用相同的配置时它可以工作......

root@31aab3e484e1:/var/www/symfony# php -v
PHP 7.4.13 (cli) (built: Dec 11 2020 08:31:11) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)

我的错误在哪里?是 php 配置还是 PhpStorm?

Eko*_*val 3

我在 Ubuntu 20.04 上工作。

添加到您的项目docker-compose.yml

https://github.com/docker/for-linux/issues/264#issuecomment-772844305

services:
  your_php_service_name:
    extra_hosts:
      - host.docker.internal:host-gateway
Run Code Online (Sandbox Code Playgroud)

在 CLI 中运行 export XDEBUG_TRIGGER=1 && export PHP_IDE_CONFIG="serverName=host.docker.internal"以使用请求启动 xdebug。

感谢@LazyOne 对问题的评论和解决方案。