PhpStorm Xdebug:等待与 ide 键“docker”的传入连接

问题描述

在与我的 Docker、Xdebug 和 PHPStorm 交战几天后,我遇到了这个问题。

problem screen

我的调试配置:

configuration

在我使用 curl 127.0.0.1:6080 之后(因为这是我从 docker-compose 的端口),调试部分没有任何反应。如有任何建议,我将不胜感激。

# Nginx
Nginx-service:
    image: Nginx:stable-alpine
    container_name: Nginx-container
    ports:
        - "6080:80"
    volumes:
        - ./app:/var/www/project
        - ./Nginx/default.conf:/etc/Nginx/conf.d/default.conf
    depends_on:
        - PHP74-service
        - MysqL8-service
    networks:
        - Nginx-PHP74-MysqL8

任何我的 PHP Dockerfile:

FROM PHP:7.4-fpm

RUN apt-get update && apt-get install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \
    && docker-PHP-ext-install intl opcache pdo pdo_MysqL \
    && pecl install apcu \
    && docker-PHP-ext-enable apcu \
    && docker-PHP-ext-configure zip \
    && docker-PHP-ext-install zip

RUN pecl install xdebug && docker-PHP-ext-enable xdebug \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.remote_port=9001" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.remote_connect_back=0" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.mode=debug" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.start_with_request=yes" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.discover_client_host=1" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.idekey=docker" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini \
&& echo "xdebug.remote_host=192.168.0.1" >> /usr/local/etc/PHP/conf.d/docker-PHP-ext-xdebug.ini

workdir /var/www/project

RUN curl -sS https://getcomposer.org/installer | PHP -- --install-dir=/usr/local/bin --filename=composer

RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony

解决方法

pecl install xdebug 安装 Xdebug 3,其中一些设置用于 Xdebug 2。你应该去掉这些:

&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \

请阅读Upgrade Guide

xdebug.remote_host 设置现在应为 xdebug.client_host=192.168.0.1(如果这是您的 IDE 正在侦听的主机的 IP 地址)。

使用 docker 时,您不需要 xdebug.discover_client_host=1(因此将其设置为 0)。

通过创建包含 xdebug_info();(如 phpinfo())的页面,您可以更轻松地自我诊断问题,该页面将显示 Xdebug 的所有设置、配置的模式和主机(如果有的话)Xdebug 尝试连接。另请参阅 this YouTube 视频,介绍如何诊断问题。