переинициализировать общесистемную переменную среды в linux - PullRequest
5 голосов
/ 22 сентября 2008

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

Ответы [ 4 ]

6 голосов
/ 22 сентября 2008

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

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

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

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

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

0 голосов
/ 08 октября 2014

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

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
0 голосов
/ 24 сентября 2008

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

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

Подробнее см. Apache mod_env :

0 голосов
/ 22 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...