повторная инициализация общесистемной переменной окружения в linux
-
02-07-2019 - |
Вопрос
Я просто хочу, чтобы мой 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'