2011-08-23 4 views
1

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

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

Проблема заключается в том, что в моем сервере WAMP, в то время как это работает:

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

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

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

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

KOHANA_ENV=devbox1 

поэтому он должен работать.

ответ

2

WAMP не работает, как человек работает wampmanager.exe а то, что служба Apache была создана для работы в качестве. Обычно это LocalService (Local System Account).

http://support.microsoft.com/kb/821761 утверждает, что

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

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

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

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

будет печатать то, что, как ожидается.

+0

Я попробовал эти 'getenv()' и 'putenv()', но 'putenv()' не сохраняет переменную постоянно. как я могу найти физический файл на своем сервере, где я могу сохранить переменную вручную для постоянного использования, потому что она не отменяется при перезагрузке wamp/os. (У меня есть dev win/wamp и server ubunto/xamp) нужен файл для обоих – alamnaryab

0

это звонит колокол .. попробовать это возможно,

global $HTTP_ENV_VARS; 
echo $HTTP_ENV_VARS["KOHANA_ENV"] 
+0

Nope. Это тоже возвращает ничто. – Henno