Setting $_ENV (fka $HTTP_ENV_VARS) with nginx/php-fpm Setting $_ENV (fka $HTTP_ENV_VARS) with nginx/php-fpm nginx nginx

Setting $_ENV (fka $HTTP_ENV_VARS) with nginx/php-fpm


nginx doesn't have a way of affecting php's environment, since it doesn't embed the php interpreter into its process. It passes parameters to php through fastcgi_param directives. You can just add one where you set the rest of your params and access it via $_SERVER:

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


Be aware that the availability of $_ENV variables depends on the setting of variables_order in the php.ini used by php-fpm. The default is EGPCS, where E is environment, however on Ubuntu 12.04 I found it was GPCS. The php.ini itself carries a warning regarding $_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.

It recommends using getenv() which is always available. I found that variables I set in the FPM pool could be retrieved this way.