Я запускаю php7-fpm в контейнере докера. Однако мои скрипты php не могут получить доступ к переменным среды, установленным в моем файле docker-compose. getenv ('MY_ENV_VAR')
возвращает FALSE
.
Я изменил /etc/php/7.0/fpm/pool.d/www.conf
включить clear_env = no
и перезапустить с помощью службы php7. 0-fpm restart
, но мои переменные окружения start отсутствуют.
Я также пробовал отредактировать /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
Затем в моем файле Docker -
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 запустите de php-fpm с init.d
, не используйте службу
.
Пример:
CMD /etc/init.d/php7.2-fpm start && nginx -g 'daemon off;'
Проверить переменные среды сейчас