【发布时间】:2020-10-10 15:27:30
【问题描述】:
我尝试了很多方法来让 Xdebug 在 Docker 容器中工作。我接触过这些资源:
- Setting up Xdebug with Docker Compose and WordPress image
- Installing XDebug in Docker
- Starting The Debugger
- Zero-configuration Web Application Debugging with Xdebug and PhpStorm
- Xdebug & Zend Debugger bookmarklets generator for PhpStorm
- Configure Xdebug
- Troubleshooting common PHP debugging issues
- ..和其他
我认为问题要么是我不理解的端口,要么是调试器会话没有启动或识别。对于调试器会话,我还尝试安装设置 cookie 的浏览器扩展。
我最终至少拥有了单独的容器,一个作为开发容器并启用了 Xdebug。
docker-compose.yml
version: "3"
services:
production:
build: .
ports:
- "8000:80"
volumes:
- .:/var/www/html
development:
build: .
ports:
- "8080:80"
# - "10000:80" also not working
volumes:
- .:/var/www/html
- ./dev.php.ini:/usr/local/etc/php/php.ini
Dockerfile
FROM php:7.4.0-apache
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
dev.php.ini
xdebug.remote_enable=on
xdebug.remote_host=host.docker.internal
xdebug.remote_port=10000
xdebug.idekey=PHPSTORM
localhost:8080 phpinfo 数据
PhpStorm 配置
有什么想法吗?
【问题讨论】:
-
我认为你的问题是
remote_host,这个主机是调试客户端的IP,你的主机。并且不要认为 host.docker.internal 被解析为您的主机 IP,有一个针对 linux 的 Docker 功能请求打开,并认为他们没有发布修复或改进此问题。 -
1)
xdebug.remote_host=host.docker.internal仅适用于您的主机操作系统是 Windows 或 Mac -- github.com/docker/for-linux/issues/264。在 Linux 上,您需要自己定位您的主机 IP 地址(例如ip addr并查找docker0条目)2)# - "10000:80" also not working-- 将不起作用。通过这种方式,您可以将来自操作系统的传入连接转发到容器中。但这是错误的......因为它是连接到 IDE 的 Xdebug,而不是其他方式。所以它是 IDE 监听 Xdebug 端口.. 如果它已经被 Docker 使用,则无法连接。 -
@abestrad 实际上我正在使用 Docker Desktop(适用于 Windows),我在另一个工作示例中看到了这种用法
-
@LazyOne 1) 我正在使用 Docker 桌面(适用于 Windows)。 2)感谢您的解释。 3) 很高兴知道有这篇快速入门文章,但我不再需要它了,猜猜解决方案是什么,重启电脑。
标签: docker docker-compose phpstorm port xdebug