问题描述
在与我的 Docker、Xdebug 和 PHPStorm 交战几天后,我遇到了这个问题。
我的调试配置:
在我使用 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 视频,介绍如何诊断问题。