повторная инициализация общесистемной переменной окружения в linux

StackOverflow https://stackoverflow.com/questions/114207

Вопрос

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

Это было полезно?

Решение

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

Возможные исправления:

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

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

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

Другие советы

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

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

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

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

Посмотрите на Apache mod_env для получения подробной информации:

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

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top