配置php-fpm访问docker中的环境变量

配置php-fpm访问docker中的环境变量

我在 docker 容器中运行 php7-fpm。但是我的 php 脚本无法访问我在 docker-compose 文件中设置的环境变量。getenv('MY_ENV_VAR')返回FALSE

我已将其更改/etc/php/7.0/fpm/pool.d/www.conf为包含clear_env = no并重新启动service php7.0-fpm restart,但我的环境变量启动不存在。

我也尝试过编辑 /etc/php/7.0/fpm/php.ini 并包含该行variables_order = "EGPCS"

当我在 bash shell 上执行我的容器时,我可以看到我的变量存在。只是它们在我的 php 脚本中无法访问。

我错过了什么?

答案1

这是一个 PHP-FPM 恶作剧。

  • 设置clear_env = no开启/etc/php/7.2/fpm/pool.d/www.conf,所以;

在 Dockerfile 上启动 php-fpm init.d不使用 service
前任:

CMD /etc/init.d/php7.2-fpm start && nginx -g 'daemon off;'

立即检查环境变量

答案2

嗯,这似乎全都是错的,但是我已经通过在 bash 脚本中添加环境变量来使它工作了-

#!/bin/bash    
echo "" >> /etc/php/7.0/fpm/pool.d/www.conf # new line.
if ! [ -z "$MY_ENV_VAR" ]
then
    echo "env[MY_ENV_VAR] = $MY_ENV_VAR;" >>  /etc/php/7.0/fpm/pool.d/www.conf
fi

然后在我的 Dockerfile 中 -

COPY add_env_vars.sh /add_env_vars.sh
CMD source /add_env_vars.sh && service php7.0-fpm start

看起来 php-fpm 不能很好地与系统环境变量配合。

欲了解更多信息,请参阅 -

相关内容