gpt4 book ai didi

docker - 使用 Xdebug 作为调试器在 Docker 容器上使用 VSCode 调试 Laravel

转载 作者:行者123 更新时间:2023-12-02 18:14:55 27 4
gpt4 key购买 nike

我正在尝试使用 Xdebug 在 Visual Studio Code 上调试 Laravel 代码。我正在使用用作服务器的 Docker 容器。

但是在尝试调试时出现此错误:

Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: connect ECONNREFUSED 192.168.99.100:9000).



这是我的 VSCode launch.json
    "version": "0.2.0",
"configurations": [

{
"type": "node",
"request": "attach",
"name": "Docker: Attach to Node",
"port": 9000,
"address": "192.168.99.100",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/var/www",
"protocol": "inspector",
"restart": true
}
]

这是 docker-compose.yml
  app:
build:
context: ./
dockerfile: .docker/app.dockerfile
args:
- INSTALL_XDEBUG=true
working_dir: /var/www
volumes:
- ./:/var/www
environment:
- "DB_PORT=33061"
- "DB_HOST=192.168.99.100"
- XDEBUG_CONFIG=remote_host=192.168.99.100 remote_port=9000 remote_connect_back=0

这是我的 app.dockerfile
FROM php:7.1-fpm

RUN docker-php-ext-install pdo && docker-php-ext-install pdo_mysql

#####################################
# xDebug:
#####################################

ARG INSTALL_XDEBUG=true
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
# Install the xdebug extension
pecl install xdebug && \
docker-php-ext-enable xdebug \
;fi

# Copy xdebug configration for remote debugging
COPY .docker/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini


#####################################
# ZipArchive:
#####################################

ARG INSTALL_ZIP_ARCHIVE=false
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
# Install the zip extension
docker-php-ext-install zip \
;fi

# RUN apt-get update && apt-get install -y \
# freetds-bin \
# freetds-dev \
# freetds-common \
# libct4 \
# && docker-php-ext-install pdo_dblib

# pdo_dblib
RUN apt-get update && apt-get install -y freetds-dev
RUN docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu
RUN docker-php-ext-install pdo_dblib
RUN sed -i "s|\[sqlsrv\]|\[sqlsrv\]\nhost = 172.18.250.57\nport =1435\nclient charset=UTF-8\ntds version = 8.0|g" /etc/freetds/freetds.conf




RUN usermod -u 1000 www-data

WORKDIR /var/www

CMD ["php-fpm"]

EXPOSE 9000
EXPOSE 9001

我认为 VSCode 无法使用 9000 端口连接到远程 Xdebug。但是当检查应用程序 docker 镜像时 Xdebug 工作正常。也许 VSCode 需要更多配置。但我无法解决这个问题。

最佳答案

您可以使用 PHP Debug用于连接 XDebug 的 VS Code 扩展。 PHP-FPM 默认运行在 9000 端口,所以最好更改 xdebug.remote_port设置到另一个端口(例如 9001 ):

// launch.json

"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"pathMappings": { "/": "${workspaceRoot}/" },
"port": 9001
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9001
}
]

如果您使用 Docker,请在您的 php.ini 中使用这些设置文件 :
//php.ini

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = host.docker.internal
xdebug.remote_port = 9001

从 Docker 18.03 版开始, host.docker.internal指向 Mac 上的主机 IP 地址/ Windows .对于 Linux,你可以使用这个 workaround .

设置好这些设置后,您就可以开始了。

关于docker - 使用 Xdebug 作为调试器在 Docker 容器上使用 VSCode 调试 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com