
本文详细介绍了如何在 docker 环境下配置 xdebug 3 与 vscode 进行 php 调试。内容涵盖 `docker-compose.yaml`、`dockerfile` 和 `xdebug.ini` 的正确设置,以及 vscode `launch.json` 的配置。特别强调了 `xdebug.ini` 文件命名和放置位置的关键性,并提供了常见问题排查建议,旨在帮助开发者构建稳定高效的调试工作流。
在现代 PHP 开发中,利用 Docker 容器化应用已成为主流。为了在容器内实现高效的 PHP 代码调试,Xdebug 扮演着不可或缺的角色。本文将详细阐述如何配置 Xdebug 3,使其在 Docker 容器中与 VSCode 调试器无缝协作。
Xdebug 3 相较于早期版本,引入了更简洁的配置项。以下是调试模式下几个关键的配置参数:
为了在 Docker 容器中运行 Xdebug,我们需要修改 Dockerfile 和 docker-compose.yaml。
docker-compose.yaml 定义了服务、端口映射和卷挂载。确保 PHP 服务将应用代码挂载到容器内,并暴露必要的端口。
version: '2'
services:
php:
image: yiisoftware/yii2-php:7.4-apache
build:
context: .
dockerfile: Dockerfile
volumes:
- ~/.composer-docker/cache:/root/.composer/cache:delegated
- ./../../:/app:delegated # 将宿主机应用代码挂载到容器的 /app 目录
ports:
- '8001:80' # 将宿主机的 8001 端口映射到容器的 80 端口说明:
Dockerfile 负责安装 Xdebug 扩展并将其配置文件复制到正确的位置。
FROM yiisoftware/yii2-php:7.4-apache # 安装 Xdebug 扩展 RUN pecl install -f xdebug && docker-php-ext-enable xdebug # 复制 Xdebug 配置文件到 PHP 配置目录 # 关键点:确保文件名为 xdebug.ini,而不是 docker-php-ext-xdebug.ini COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
关键注意事项: 在 PHP 的 FPM 或 Apache 环境中,PHP 会加载 /usr/local/etc/php/conf.d/ 目录下的所有 .ini 文件。虽然 docker-php-ext-enable xdebug 命令可能会生成一个名为 docker-php-ext-xdebug.ini 的文件,但直接将自定义的 xdebug.ini 文件命名为 xdebug.ini 并复制过去,可以避免潜在的配置覆盖或加载顺序问题,确保你的自定义配置生效。
在你的项目根目录或 Dockerfile COPY 命令能访问到的地方创建 xdebug.ini 文件,并包含以下内容:
zend_extension = xdebug_extension [XDebug] xdebug.mode = debug xdebug.start_with_request = yes xdebug.client_port = 9003 xdebug.client_host = 'host.docker.internal' # 宿主机地址,用于 Docker Desktop xdebug.log = /tmp/xdebug.log # 启用 Xdebug 日志,方便排查问题
说明:
VSCode 的 launch.json 文件定义了调试会话的启动方式。
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003, // 必须与 xdebug.client_port 保持一致
"log": true, // 启用 VSCode 调试器日志
"pathMappings": {
"/app": "${workspaceRoot}" // 容器内代码路径到宿主机工作区路径的映射
},
"hostname": "0.0.0.0", // 监听所有网络接口
"xdebugSettings": {
"max_data": 65535,
"show_hidden": 1,
"max_children": 100,
"max_depth": 5
}
}
]
}关键配置项:
docker-compose up --build -d
通过上述步骤,你应该能够成功地在 Docker 容器中配置 Xdebug 3 并与 VSCode 进行调试。核心在于确保 Dockerfile 正确安装和配置 Xdebug,特别是 xdebug.ini 的命名和放置位置,以及 xdebug.client_host 和 VSCode pathMappings 的准确性。当遇到问题时,善用 Xdebug 日志和 VSCode 调试器日志将大大提高问题排查效率。构建一个稳定可靠的调试环境,将极大地提升 PHP 开发效率。
以上就是Xdebug 3 在 Docker 容器中与 VSCode 协同调试指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号