Я просто хочу, чтобы мой apache зарегистрировал некоторую предопределенную среду, чтобы я мог ее получить с помощью функции getenv в php. Как я могу это сделать? Я попытался добавить /etc/profile.d/foo.sh с экспортом FOO =/bar/baz с помощью root и перезапустил apache.повторно инициализировать системную переменную окружения в linux
ответ
Переменные окружения наследуются процессами в Unix. Файлы в файле /etc/profile.d выполняются только (в текущей оболочке, а не в подоболочке) при входе в систему. Просто изменив значение, а затем перезапустив процесс, он не обновит среду.
Возможные ошибки:
- журнала из/входа в систему, затем запустить Apache
- источник файл:
# . /etc/profile.d/foo.sh
, а затем перезапустить Apache - источником файл в сценарии апач инициализации
Вы также должны убедиться, что /etc/profile.d/
создан, когда Apache запущен init
, а не вы сами.
Лучшее решение может также зависеть от используемого вами дистрибутива, поскольку они используют различные схемы для конфигурации.
Хорошо. Имейте в виду, что скрипт init apache может измениться при обновлении. – 2008-09-22 11:07:20
Вы можете использовать SetEnv в своих конфигурационных файлах (/etc/httpd/conf.d/*.conf, .htaccess ...). Кроме того, вы должны определить их в/etc/sysconfig/httpd (в дистрибутивах на основе RPM) и экспорт их (примечание: не проверено).
Примечание: меня не удивило бы, если бы некоторые дистрибутивы пытались скрыть как можно больше, насколько это возможно, системную конфигурацию, от общедоступной службы, такой как Apache. И если они этого не сделают, они могут начать делать это в будущей версии. Поэтому я советую вам сделать это явно. Если вам нужно использовать такую установку между Apache и вашими оболочками, вы можете попробовать поиск /etc/profile.d/yourprofile.sh из /и т.д./sysconfig/HTTPD
Apache файлы конфигурации позволяют установить переменные среды для каждого сайта.
Таким образом, если ваш веб-сервер обслуживает страницы с двух логических сайтов, вы можете иметь одну и ту же переменную окружения, установленную по-разному для каждого сайта, и, таким образом, заставить ваш PHP реагировать по-разному.
Смотрите Apache mod_env Подробности:
Если вам нужно окр вары только для Apache, то, что работал для меня было редактированием /etc/apache2/envvars
и перезапуск Apache. Я добавил следующие настройки:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Какое распределение? Это влияет на наилучший способ сделать это. – freespace 2008-09-22 10:50:36