Установка $ _ENV (fka $ HTTP_ENV_VARS) с nginx / php-fpm

Каков эквивалент setenv в среде apache? С apache я могу, например, установить env «SOMEENV» и получить доступ к нему в php через $ _ENV ['SOMEENV'] – но я не знаю, как это сделать с nginx + php-fpm.

Первоначально я думал, что мне просто нужно установить ENV [SOMENEV] = test в конфиге моего пула php-fpm, но var_dump ($ _ ENV) все равно ничего не возвращает.

Любые намеки?

Solutions Collecting From Web of "Установка $ _ENV (fka $ HTTP_ENV_VARS) с nginx / php-fpm"

nginx не имеет возможности влиять на среду php, поскольку он не вставляет PHP-интерпретатор в свой процесс. Он передает параметры в php через директивы fastcgi_param . Вы можете просто добавить тот, где вы задали остальные параметры и получить доступ к нему через $ _SERVER:

location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SOMEENV test; fastcgi_pass php; } 

Имейте в виду, что доступность переменных $_ENV зависит от параметра variables_order в php.ini, используемого php-fpm. По умолчанию используется EGPCS , где E – среда, однако на Ubuntu 12.04 я обнаружил, что это GPCS . Сам php.ini несет предупреждение о $_ENV :

 ; This directive determines which super global arrays are registered when PHP ; starts up. G,P,C,E & S are abbreviations for the following respective super ; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty ; paid for the registration of these arrays and because ENV is not as commonly ; used as the others, ENV is not recommended on productions servers. 

Он рекомендует использовать getenv() который всегда доступен. Я обнаружил, что переменные, установленные в пуле FPM, могут быть восстановлены таким образом.

Я установил все env […] = переменные в php-fpm.d / http://www.conf. После пробовать выходные, я нашел единственный способ доступа к этим переменным использовать $ _SERVER, а $ _ENV не может получить доступ к этим переменным. Может ли кто-нибудь дать идею?