Xdebug(Docker容器内部)忽略XDEBUG_CONFIG环境变量
我在Docker上运行PHP应用程序,我想使用XDebug进行调试。 在我的码头工人,撰写添加以下线路中的phpfpm部分:Xdebug(Docker容器内部)忽略XDEBUG_CONFIG环境变量
environment:
XDEBUG_CONFIG: "remote_enable=1 remote_host=192.168.110.29 remote_port=9000 idekey=PHPSTORM remote_autostart=1"
PHP_IDE_CONFIG: "serverName=reports.dev"
我以正确的方式配置PHPStorm,监听端口9000和运行应用程序。
该应用程序完美地工作,但XDebug似乎没有工作。
如果我将php.ini文件中的配置行移动到调试器中,除了服务器名称为空且我无法调试(这就是为什么我尝试遵循docker-compose配置方式)的事实。
如果在Docker容器中运行echo $ XDEBUG_CONFIG,输出是正确的,但是XDebug似乎不会读取Env变量。
我有同样的问题。我的图像基于nimmis/alpine-apache-php7/
。我发现图像使用supervisor
来启动进程。 supervisor
不了解Docker环境变量。
要通知supervisor
需要运行进程的约定是在/etc/sv/{process}/run
处创建run
脚本。 A script like this被用来启动Apache。我需要更改脚本,以便在启动Apache之前导入Docker环境变量。
的docs for the base image解释公约导入泊坞环境:
如果需要从泊坞窗命令行环境变量(-e, - ENV = [])添加
source /etc/envvars
然后在脚本文件中使用它们
所以我创建了my own custom run
script for Apache - 我在httpd
执行之前加了source /etc/envvars
。
我改写the original run
script,通过把一个简单COPY
到my Dockerfile:
COPY apache-run.sh /etc/sv/apache2/run
这成功地确保了我$XDEBUG_CONFIG
是可见的httpd
在它推出的时间。通过在网页上打印phpinfo();
,我能够确认这会影响我的PHP配置。
你做了phpinfo();
?这应该告诉你使用的设置。
我有同样的问题......带我永远弄清楚。您是否在使用xdebug.remote_connect_back=1
?如果这样删除该行。
我的nginx代理正在转发IP(这是错误的),因此XDEBUG_CONFIG中的IP设置被忽略。
对我来说是使用官方的PHP-FPM-高山搬运工像一个不同的问题(FROM php:7-fpm-alpine
)
我需要对Xdebug的-CONFIG添加到FPM池配置: env[XDEBUG_CONFIG] = $XDEBUG_CONFIG
1)你服务/尝试调试网页?如果是这样的 - 配置的服务器名称存在(尤其是如果它nginx的 - 很多时候它是空白)。 2)你如何启动容器?我的意思是 - 您使用PhpStorm这个,或者它从外部(终端)进行管理? https://youtrack.jetbrains.com/issue/WI-33800 – LazyOne
1)是的,我正在调试网页,是的,nginx中的服务器名称没有定义,因为代码不在容器内,所以我有一个docker为我所有的项目构成,我不愿意改变它。 2)我使用在终端外phpstorm搬运工-构成的。 顺便说一句,这并不回答我的问题,我不明白为什么没有被Xdebug的容器内读XDEBUG_CONFIG – sangio90