首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker容器中的Xdebug 3:无法连接到调试客户端。-地址不详

Docker容器中的Xdebug 3:无法连接到调试客户端。-地址不详
EN

Stack Overflow用户
提问于 2022-07-25 08:55:00
回答 1查看 386关注 0票数 0

在我的Docker容器中,xdebug说:Could not connect to debugging client.

这是我的文档:

代码语言:javascript
运行
复制
FROM php:8.1-fpm-alpine

WORKDIR /var/www/html

RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

ENV PHP_MEMORY_LIMIT=1G
ENV PHP_UPLOAD_MAX_FILESIZE: 512M
ENV PHP_POST_MAX_SIZE: 512M

RUN docker-php-ext-install pdo

RUN apk add --no-cache libpng libpng-dev && docker-php-ext-install gd && apk del libpng-dev

RUN apk update \
    && apk upgrade \
    && apk add --no-cache \
        freetype \
        libpng \
        libjpeg-turbo \
        freetype-dev \
        libpng-dev \
        jpeg-dev \
        libwebp-dev \
        libjpeg \
        libjpeg-turbo-dev

RUN docker-php-ext-configure gd \
        --with-freetype=/usr/lib/ \
        --with-jpeg=/usr/lib/ \
        --with-webp=/usr

RUN NUMPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \
    && docker-php-ext-install -j${NUMPROC} gd


RUN apk add --no-cache sqlite-libs
RUN apk add --no-cache icu sqlite git openssh zip
RUN apk add --no-cache --virtual .build-deps icu-dev libxml2-dev sqlite-dev curl-dev
RUN docker-php-ext-install \
        bcmath \
        curl \
        ctype \
        intl \
        pdo \
        pdo_sqlite \
        xml
RUN apk del .build-deps

RUN docker-php-ext-enable pdo_sqlite

# Add xdebug
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS
RUN apk add --update linux-headers
RUN pecl install xdebug-3.1.5
RUN docker-php-ext-enable xdebug
RUN apk del -f .build-deps

# Configure Xdebug
RUN echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.log=/var/www/html/xdebug/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.discover_client_host=1" >> /usr/local/etc/php/conf.d/xdebug.ini

在xdebug.log文件中,我看到了以下内容:

代码语言:javascript
运行
复制
[1] [Step Debug] INFO: Checking remote connect back address.
[1] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
[1] [Step Debug] INFO: Checking header 'REMOTE_ADDR'.
[1] [Step Debug] WARN: Could not discover client host through HTTP headers, connecting to configured address/port: localhost:9003. :-|
[1] [Step Debug] WARN: Creating socket for 'localhost:9003', poll success, but error: Operation in progress (29).
[1] [Step Debug] WARN: Creating socket for 'localhost:9003', connect: Address not available.
[1] [Step Debug] ERR: Could not connect to debugging client. Tried: localhost:9003 (fallback through xdebug.client_host/xdebug.client_port) :-(

我试着获取一些关于网络的信息,netstat说(容器构建日志):

代码语言:javascript
运行
复制
Step 25/28 : RUN /bin/netstat -a -n
 ---> Running in 2cf0502655f5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path

所以netstat说没有任何活动连接。

我尝试设置xdebug.client_host=host.docker.internal,之后我在日志中得到了这个结果:

代码语言:javascript
运行
复制
[1] [Step Debug] INFO: Connecting to configured address/port: host.docker.internal:9003.
[1] [Step Debug] WARN: Creating socket for 'host.docker.internal:9003', getaddrinfo: Resource temporarily unavailable.
[1] [Step Debug] ERR: Could not connect to debugging client. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port) :-(

localhost127.0.0.1也不是client_host

我只想使用Xdebug生成覆盖率报告.

如何解决这个问题?我应该设置什么为client_host

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 10:51:50

您目前已经将Xdebug的模式设置为xdebug.mode=debug,这是用于单步执行的,并且确实需要连接到IDE。如果不能,它将向您显示此错误。

由于您只想对代码覆盖率信息使用Xdebug,所以Xdebug不需要连接到任何东西。

相反,您应该将Dockerfile中的设置改为使用echo "xdebug.mode=debug"。您还可以安全地删除包含discover_client_host的行。

Xdebug的模式在文献资料和这个YouTube视频中都有详细的描述。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73106452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档