2008-09-22 4 views
5

Я просто хочу, чтобы мой apache зарегистрировал некоторую предопределенную среду, чтобы я мог ее получить с помощью функции getenv в php. Как я могу это сделать? Я попытался добавить /etc/profile.d/foo.sh с экспортом FOO =/bar/baz с помощью root и перезапустил apache.повторно инициализировать системную переменную окружения в linux

+0

Какое распределение? Это влияет на наилучший способ сделать это. – freespace 2008-09-22 10:50:36

ответ

6

Переменные окружения наследуются процессами в Unix. Файлы в файле /etc/profile.d выполняются только (в текущей оболочке, а не в подоболочке) при входе в систему. Просто изменив значение, а затем перезапустив процесс, он не обновит среду.

Возможные ошибки:

  • журнала из/входа в систему, затем запустить Apache
  • источник файл: # . /etc/profile.d/foo.sh, а затем перезапустить Apache
  • источником файл в сценарии апач инициализации

Вы также должны убедиться, что /etc/profile.d/ создан, когда Apache запущен init, а не вы сами.

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

+0

Хорошо. Имейте в виду, что скрипт init apache может измениться при обновлении. – 2008-09-22 11:07:20

0

Вы можете использовать SetEnv в своих конфигурационных файлах (/etc/httpd/conf.d/*.conf, .htaccess ...). Кроме того, вы должны определить их в/etc/sysconfig/httpd (в дистрибутивах на основе RPM) и экспорт их (примечание: не проверено).

Примечание: меня не удивило бы, если бы некоторые дистрибутивы пытались скрыть как можно больше, насколько это возможно, системную конфигурацию, от общедоступной службы, такой как Apache. И если они этого не сделают, они могут начать делать это в будущей версии. Поэтому я советую вам сделать это явно. Если вам нужно использовать такую ​​установку между Apache и вашими оболочками, вы можете попробовать поиск /etc/profile.d/yourprofile.sh из /и т.д./sysconfig/HTTPD

0

Apache файлы конфигурации позволяют установить переменные среды для каждого сайта.

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

Смотрите Apache mod_env Подробности:

0

Если вам нужно окр вары только для Apache, то, что работал для меня было редактированием /etc/apache2/envvars и перезапуск Apache. Я добавил следующие настройки:

export LANG='en_US.UTF-8' 
export LC_ALL='en_US.UTF-8'