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






Переменные среды наследуются процессами в Unix. Файлы в /etc/profile.d выполняются (в текущей оболочке, а не в подоболочке) только при входе в систему. Простое изменение значения там и последующий перезапуск процесса не приведет к обновлению среды.
Возможные исправления:
# . /etc/profile.d/foo.sh, затем перезапустите apacheВам также необходимо убедиться, что источник /etc/profile.d/ запускается при запуске Apache init, а не вами.
Лучшее исправление также может зависеть от используемого вами дистрибутива, поскольку они используют разные схемы для настройки.
Хороший. Имейте в виду, что сценарий инициализации apache может измениться при обновлении.
Вы можете использовать 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:
Если вам нужны env vars только для Apache, у меня сработало редактирование /etc/apache2/envvars и перезапуск Apache. Я добавил эти настройки:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Какая раздача? Это влияет на лучший способ сделать это.