我正在尝试设置一个停靠的 AMP 环境,但无法让远程调试器正常工作。我的设置如下:
我有一个运行 mysql 的数据库容器,它的工作就像一个魅力。我使用以下 Dockerfile 构建了一个 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 已经启动并运行。
接下来,我在 IntelliJ IDEA 中设置了一个名为“Docker”的服务器,主机 127.0.0.1
、端口 8080
和调试器 Xdebug。我设置了类似于 docker run 语句中的卷映射的路径映射。
在 PHP->Debug settings 我检查了我使用端口 9000
进行传入连接,我将接受外部连接并且我不会忽略来自未注册的连接服务器。
在此之后,我还创建了一个名为 Docker 的新 PHP 远程调试配置。服务器是 Docker, session id 是 XDEBUG_IDEA
。
我可以调用容器上的 PHP 文件,我可以通过链接连接到数据库...但是由于某种原因,当我尝试启动调试 session 时没有任何反应。我尝试使用 cookie(是的,我在 xdebug 帮助器中将 XDEBUG_IDEA
设置为 session ID)。我尝试发送 XDEBUG_SESSION_START=XDEBUG_IDEA
作为 GET
...
各位聪明人能告诉我我错过了什么吗?
最佳答案
您可以尝试使用此配置。 php-apache build 提供了两种方法来编译和启用模块 php。
最好使用 docker-php-ext-enable xdebug
来设置正确的文件配置。
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
关于php - 从 Docker 容器内部使用 XDebug 进行远程调试不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594804/