Я запускаю 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, я вижу, что мои переменные существуют. Просто они недоступны в моих php скриптах.
Что мне не хватает?
Что ж, это кажется неправильным, но у меня это работает, добавляя переменные среды в сценарий 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 просто не работает с системными переменными окружения.
Для получения дополнительной информации см. -
Это розыгрыш 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;'
Проверить переменные среды сейчас 🤩