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

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

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

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

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

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

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

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

1 ответ

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

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

licensed under cc by-sa 3.0 with attribution.