使用 Docker 和 VSCode 设置 XDebug
Setting up XDebug with Docker and VSCode
我使用 Docker - nginx:stable-alpine、php:8.0-fpm-alpine 和 mysql:5.7.32 设置了一个 Laravel 开发环境.我从 php.dockerfile:
安装 Xdebug
RUN apk --no-cache add pcre-dev ${PHPIZE_DEPS} \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& apk del pcre-dev ${PHPIZE_DEPS}
并在docker中包含两卷-组成指向php到xdebug.ini和error_reporting.ini:
volumes:
- .:/var/www/html
- ../docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ../docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini
我的 xdebug.ini 看起来像这样:
zend_extension=xdebug
[xdebug]
xdebug.mode=develop,debug,trace,profile,coverage
xdebug.start_with_request = yes
xdebug.discover_client_host = 0
xdebug.remote_connect_back = 1
xdebug.client_port = 9003
xdebug.remote_host='host.docker.internal'
xdebug.idekey=VSCODE
当我 return phpinfo() 时,我可以看到一切看起来都设置正确,显示 xdebug 版本 3.0.4 已安装,但是当我在 [=44= 中设置断点时] 和 运行 调试器没有命中它。
我的 launch.json 看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "XDebug Docker",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}/src",
}
},
]
}
我的文件夹结构如下所示:
- Project
-- /docker
-- nginx.dockerfile
-- php.dockerfile
--- /nginx
--- /certs
--- default.conf
--- /php
---- /conf.d
---- error_reporting.ini
---- xdebug.ini
-- /src (the laravel app)
Xdebug 3 更改了设置的名称。根据升级指南,您需要使用 xdebug.client_host
而不是 xdebug.remote_host
:https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_host
xdebug.remote_connect_back
也已重命名为 xdebug.discover_client_host
,但在将 Xdebug 与 Docker 一起使用时,您应该将该设置保留为 0
.
我使用 Docker - nginx:stable-alpine、php:8.0-fpm-alpine 和 mysql:5.7.32 设置了一个 Laravel 开发环境.我从 php.dockerfile:
安装 XdebugRUN apk --no-cache add pcre-dev ${PHPIZE_DEPS} \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& apk del pcre-dev ${PHPIZE_DEPS}
并在docker中包含两卷-组成指向php到xdebug.ini和error_reporting.ini:
volumes:
- .:/var/www/html
- ../docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ../docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini
我的 xdebug.ini 看起来像这样:
zend_extension=xdebug
[xdebug]
xdebug.mode=develop,debug,trace,profile,coverage
xdebug.start_with_request = yes
xdebug.discover_client_host = 0
xdebug.remote_connect_back = 1
xdebug.client_port = 9003
xdebug.remote_host='host.docker.internal'
xdebug.idekey=VSCODE
当我 return phpinfo() 时,我可以看到一切看起来都设置正确,显示 xdebug 版本 3.0.4 已安装,但是当我在 [=44= 中设置断点时] 和 运行 调试器没有命中它。
我的 launch.json 看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "XDebug Docker",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}/src",
}
},
]
}
我的文件夹结构如下所示:
- Project
-- /docker
-- nginx.dockerfile
-- php.dockerfile
--- /nginx
--- /certs
--- default.conf
--- /php
---- /conf.d
---- error_reporting.ini
---- xdebug.ini
-- /src (the laravel app)
Xdebug 3 更改了设置的名称。根据升级指南,您需要使用 xdebug.client_host
而不是 xdebug.remote_host
:https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_host
xdebug.remote_connect_back
也已重命名为 xdebug.discover_client_host
,但在将 Xdebug 与 Docker 一起使用时,您应该将该设置保留为 0
.