Как я могу получить доступ к переменным среды с помощью сервера WAMP? - PullRequest
1 голос
/ 23 августа 2011

Я пытаюсь адаптировать свой код для использования другого пароля базы данных и т. Д. В зависимости от среды, в которой он работает. Например, у меня есть свой dev-сервер, у другого разработчика есть его, а в рабочей среде есть еще один набор настроек.

Поскольку у меня также есть несколько проектов на Kohana, я решил использовать переменную окружения KOHANA_ENV для приложения, чтобы определить, где оно работает.

Проблема в том, что на моем сервере WAMP, хотя это работает:

<?php echo getenv('REMOTE_ADDR'); ?>

, это не так (возвращает пустоту):

<?php echo getenv('KOHANA_ENV'); ?>

Когда я набираю set в командной строке, я вижу это:

KOHANA_ENV=devbox1

так должно работать.

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

WAMP не запускается от имени пользователя, выполняющего wampmanager.exe, а скорее от того, для чего была настроена служба Apache.Обычно это LocalService (учетная запись локальной системы).

http://support.microsoft.com/kb/821761 заявляет, что

Если вы обновляете переменные среды или добавляете новые переменные среды, необходимо перезагрузить компьютер перед тем, какИзменения, которые вы вносите, влияют на службы, работающие под учетной записью локальной системы.

Это происходит потому, что службы, работающие под учетной записью локальной системы, наследуют свою среду от процесса Services.exe.Процесс Services.exe получает параметры среды для учетной записи локальной системы при запуске Windows.Поскольку процесс Services.exe не использует Windows Messaging, при получении сообщений, указывающих, что значение изменилось после запуска Windows, процесс Services.exe не обновляет свои параметры среды.Вы не можете заставить службу, которая работает, подтверждать динамическое изменение среды учетной записи локальной системы.

И действительно, когда компьютер перезагружается после добавления переменной среды в системные переменные среды, этокод:

<?php echo getenv('YOUR_ENVIRONMENTAL_VARIABLE'); ?> 

напечатает то, что ожидается.

0 голосов
/ 23 августа 2011

это звонит в колокольчик .. попробуйте это возможно,

global $HTTP_ENV_VARS;
echo $HTTP_ENV_VARS["KOHANA_ENV"]
...