【发布时间】:2017-12-29 18:14:32
【问题描述】:
我基本上是在使用这个配置来为 Symfony 项目https://github.com/maxpou/docker-symfony 创建开发环境。它运行但我无法让 Xdebug 工作:当我设置断点时它不会停止。
我还尝试将 Xdebug 配置为使用 connect_back,但这不起作用。也许这与我在 Windows 机器上开发的事实有关?非常感谢任何见解。
Dockerfile PHP:FPM
# See https://github.com/docker-library/php/blob/master/7.1/fpm/Dockerfile
FROM php:7.1-fpm
ARG TIMEZONE
MAINTAINER Maxence POUTORD <maxence.poutord@gmail.com>
RUN apt-get update && apt-get install -y \
openssl \
git \
unzip
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version
# Set timezone
RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} > /etc/timezone
RUN printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini
RUN "date"
# Type docker-php-ext-install to see available extensions
RUN docker-php-ext-install pdo pdo_mysql
# install xdebug
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
#RUN echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.idekey=\"PHPSTORM\"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
# DockerNAT gateway IP
RUN echo "xdebug.remote.host=10.0.75.1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote.mode=req" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote.handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo 'alias sf="php app/console"' >> ~/.bashrc
RUN echo 'alias sf3="php bin/console"' >> ~/.bashrc
WORKDIR /var/www/free-energy/symfony
docker-compose.yml:
# https://github.com/maxpou/docker-symfony
version: '2'
services:
db:
image: mysql
volumes:
- "./.data/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
php:
build:
context: php7-fpm
args:
TIMEZONE: ${TIMEZONE}
volumes:
- ${SYMFONY_APP_PATH}:/var/www/free-energy/symfony
- ./logs/symfony:/var/www/free-energy/symfony/app/logs
environment:
PHP_IDE_CONFIG: serverName=free-energy.org
nginx:
build: nginx
ports:
- 80:80
volumes_from:
- php
volumes:
- ./logs/nginx/:/var/log/nginx
elk:
image: willdurand/elk
ports:
- 81:80
volumes:
- ./elk/logstash:/etc/logstash
- ./elk/logstash/patterns:/opt/logstash/patterns
volumes_from:
- php
- nginx
【问题讨论】:
-
在您的教程@TarunLalwani 的帮助下,我终于进行了调试。关键 xdebug.remote.host 现在是 xdebug.remote_host 并且 IP 现在指向我的主机而不是 dockerNat 地址。我非常感谢几天后有些东西起作用了。不过,我认为重新启动后,我的主机 IP 会每天更改一个手动步骤。同样在 SSH 解决方案中,root@host-ip 指向主机 IP,所以这并不能帮助我:) 对此有什么想法吗?
-
1) “Xdebug 配置为在端口 9001 上运行,因为 FPM 在端口 9001 上运行” 我假设您的意思是最后一个中包含 9000 .. 否则它不会很有意义。 2) 只有在运行 IDE 的操作系统/计算机上已经使用了默认的 xdebug 端口(例如,通过 php-fpm),这样的更改才有意义。仅将其放在 Docker 容器中并不需要进行此类更改(因为 xdebug 不会连接到该 IP)。
-
@LazyOne 1)您的假设是正确的。 2)我用端口 9000 试了一下,它确实也有效。此配置具有我的偏好,因为它具有默认值。谢谢
标签: php windows docker-compose phpstorm xdebug