Назад | Перейти на главную страницу

Настройте php-fpm для доступа к переменным среды в докере

Я запускаю 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;'

Проверить переменные среды сейчас 🤩