Почему getenv () возвращает только переменную при запуске с терминала, а не через веб-сервер

Я пытаюсь использовать настраиваемую переменную среды для обнаружения среды в моем приложении PHP. Я установил переменную общесистемную в / etc / environment , перезагрузил и проверил, что она видна через терминал с помощью printenv .

Я также проверил, что это видно при запуске PHP в командной строке:

php -r 'echo getenv("LOCAL_DEVELOPMENT");' //returns 'true' as expected 

Но когда я пытаюсь выполнить сценарий веб-страницы, переменная не найдена:

 var_dump(getenv("LOCAL_DEVELOPMENT")); //returns 'boolean false' (not expected) 

Я использую Ubuntu 12.04 LTS с PHP 5.4 и Apache 2.2.

Почему переменная не видна из веб-скрипта и как я могу это исправить?

Предполагая, что вы используете Apache-сервер, я думаю, что его использование Apache ограничено переменными System Environment .. для обеспечения безопасности.

Вы должны установить переменные env на apache, например SetEnv LOCAL_DEVELOPMENT true или даже лучше, если SetEnv APPLICATION_ENV development обычно считается стандартом.