我在 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 不能很好地与系统环境变量配合。
欲了解更多信息,请参阅 -