微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Xdebug(在Docker容器内)忽略XDEBUG_CONFIG环境变量

我在Docker上运行PHP应用程序,我想使用XDebug进行调试.
在我的docker-compose中,我在PHPfpm部分添加了以下行:

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启动进程.主管不了解Docker环境变量.

告诉主管需要运行进程的惯例是在/ etc / sv / {process} / run创建运行脚本. A script like this用于启动Apache.我需要更改脚本,以便在启动Apache之前导入Docker环境变量.

docs for the base image解释了导入Docker环境的惯例:

If you need environment variables from the docker command line (-e,–env=[]) add

source /etc/envvars

before you use them in the script file

所以我为Apache创建了my own custom run script – 我在执行httpd之前添加了源/ etc / envvars.

我通过在my Dockerfile添加一个简单的copY来覆盖the original run script

copY apache-run.sh /etc/sv/apache2/run

这成功地确保了我的$XDEBUG_CONfig在启动时对httpd可见.通过打印PHPinfo(),我能够确认这会影响我的PHP配置;在网页中.

原文地址:https://www.jb51.cc/docker/435773.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐