使用XDebug从Docker Container进行远程debugging不起作用

我试图build立一个dockered的AMP环境,不能让远程debugging器工作。 我的设置如下:

我有一个运行MySQL的数据库容器,它像一个魅力工作。 我用下面的Dockerfile构build了一个Docker镜像“phpmysqli”

FROM php:apache RUN docker-php-ext-install mysqli mbstring # zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so RUN pecl install xdebug RUN echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> /usr/local/etc/php/php.ini RUN touch /usr/local/etc/php/conf.d/xdebug.ini; \ echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \ echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; \ echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \ echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; \ echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini; RUN echo 'date.timezone = Europe/Berlin' > /usr/local/etc/php/conf.d/date.ini 

我打电话

 docker run --rm -ti --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db phpmysqli 

在这个phpinfo之后分别php -i显示xdebug 2.3.2已经启动并正在运行。

接下来,我使用Host 127.0.0.1 ,Port 8080和Debugger Xdebug在IntelliJ IDEA中设置了一个名为“Docker”的服务器。 我在docker run语句中设置类似于Volume映射的path映射。

PHP-> Debug设置中,我检查了使用端口9000进行连接,我将接受外部连接,并且不会忽略来自未注册服务器的连接。

在此之后,我创build了一个名为Docker的新PHP远程debuggingconfiguration。 服务器是Docker,会话ID是XDEBUG_IDEA

我可以调用容器上的PHP文件,我可以通过链接连接到数据库…但由于某种原因,当我尝试启动debugging会话时,什么都不会发生。 我尝试使用cookie(是的,我把XDEBUG_IDEA设置为会话ID在xdebug助手)。 我试着发送XDEBUG_SESSION_START=XDEBUG_IDEA作为GET

你能否聪明的人告诉我我错过了什么?

你可以试试这个configuration。 php-apache build提供了两种方法来编译和启用模块php。 使用docker-php-ext-enable xdebug来设置正确的文件configuration更好。

 FROM php:5.4-apache # Enable and configure xdebug RUN pecl install xdebug RUN docker-php-ext-enable xdebug RUN sed -i '1 a xdebug.remote_autostart=true' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i '1 a xdebug.remote_mode=req' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i '1 a xdebug.remote_handler=dbgp' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i '1 a xdebug.remote_connect_back=1 ' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i '1 a xdebug.remote_port=9000' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i '1 a xdebug.remote_host=127.0.0.1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i '1 a xdebug.remote_enable=1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini