У меня есть сервер ubuntu с горсткой настраиваемой среды, установленной в / etc / environment в соответствии с рекомендацией сообщества ubuntu
 Когда я использую php из командной строки, я могу использовать функцию getenv() php для доступа к этим переменным. 
  Кроме того, если я запускаю phpinfo() из командной строки, я вижу все мои переменные в разделе ОКРУЖАЮЩАЯ СРЕДА. 
ОДНАКО:
  При попытке доступа к тем же данным внутри процессов, запущенных php5-fpm, эти данные недоступны.  Все, что я могу видеть в разделе phpinfo() : 
 USER www-data HOME /var/www 
Я знаю, что в командной строке используется эта ini:
 /etc/php5/cli/php.ini 
И fpm использует:
 /etc/php5/fpm/php.ini 
Мне не удалось найти различий между этими двумя, которые объясняли бы, почему переменные ENV не проходят через оба.
Также, если запустить:
 sudo su www-data 
а затем эхо-переменные среды, которых я ожидаю, они действительно доступны пользователю www-data.
Что мне нужно сделать, чтобы получить переменные среды в php-процессы, выполняемые fpm?
Оказывается, что вы должны явно указывать VAR ENV в php-fpm.conf
Вот пример:
 [global] pid = /var/run/php5-fpm.pid error_log = /var/log/php5-fpm.log [www] user = www-data group = www-data listen = /var/run/php5-fpm.sock pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = / env[MY_ENV_VAR_1] = 'value1' env[MY_ENV_VAR_2] = 'value2' 
1. Автоматическая настройка переменных среды в php-fpm.conf
 clear_env = no 
2. Настройка переменных среды вручную в php-fpm.conf
 env[MY_ENV_VAR_1] = 'value1' env[MY_ENV_VAR_2] = 'value2' 
! Оба метода описаны в php-fpm.conf:
Очистка среды в рабочих FPM Предотвращает, чтобы произвольные переменные окружения попадали в рабочие процессы FPM, очищая среду в рабочей среде до того, как добавлены параметры, указанные в этой конфигурации пула. Установка «no» сделает все переменные среды доступными для кода PHP через getenv (), $ _ENV и $ _SERVER. Значение по умолчанию: да
 clear_env = no 
Передавайте переменные среды, такие как LD_LIBRARY_PATH. Все $ VARIABLE берутся из текущей среды. Значение по умолчанию: clean env
 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp 
Я нашел решение в этом обсуждении github .
  Проблема заключается в том, что вы запускаете php-fpm.  Процесс не загружает среду. 
  Его можно загрузить в сценарии запуска. 
  Мой php-fpm устанавливается apt-get. 
  Так что измените 
/etc/init.d/php5-fpm
и добавьте (остерегайтесь пространства между точкой и косой чертой)
, / И т.д. / профиль
и измените / etc / profile, чтобы добавить
, /home/user/env.sh
  В env.sh.  Вы можете export среду, что вам нужно. 
Затем измените
PHP-fpm.conf
  добавьте env[MY_ENV_VAR_1] = 'value1' разделе [www] . 
  Последний.  перезапустите php-fpm.  Вы получите нагрузку среды на fpm.