Я хотел бы установить переменную среды как в system, так и в httpd.
Я установил переменную, допустим IMPORTANT_FOLDER = /MY/PATH
, в /etc/profile
и это работает для всех пользователей системы.
Что я хочу сделать, так это перенести эту переменную в httpd, чтобы ее можно было использовать в каком-то php-коде. Мне удалось сделать var доступным только добавив SetEnv IMPORTANT_FOLDER = /MY/PATH
в моих конфигурациях httpd.
Не могли бы вы предоставить мне способ передать системную переменную в apache? Для меня важно сделать его централизованным.
я использую apache 2.4
на redhat
7.
Спасибо.
Я считаю, что вы можете использовать директиву SetEnv в файле конфигурации Apache. Этим файлом может быть файл httpd.conf, или вы создаете отдельный файл в /etc/httpd/conf.d, или где бы ни находились ваши файлы.
Например:
SetEnv IMPORTANT_FOLDER = /MY/PATH
Когда сервер Apache запускается, вы должны «видеть» эту переменную в среде Apache.
Альтернативой этому могло бы быть изменение сценария инициализации HTTPD (/etc/init.d/httpd). В следующем примере я создал функцию, которая считывает вывод созданного файла связки ключей (утилиты для управления процессами ssh-agent) и помещает его в определенный файл конфигурации перед запуском сервера Apache.
Принцип заключается в том, что вы используете сценарий оболочки инициализации для изменения файла конфигурации Apache (в данном случае он находится в /etc/httpd/conf.d) перед запуском Apache.
setKeychain() {
if [ -a $(cat /etc/passwd | grep ^apache: | cut -d':' -f6)/.keychain/$(uname -n | cut -d' ' -f1)-sh ] ; then
SSH_AUTH_SOCK=$(cat $(cat /etc/passwd | grep ^apache: | cut -d':' -f6)/.keychain/$(uname -n | cut -d' ' -f1)-sh | cut -d'=' -f2 | cut -d' ' -f1 | head -1 | sed 's/;$//g')
SSH_AGENT_PID=$(cat $(cat /etc/passwd | grep ^apache: | cut -d':' -f6)/.keychain/$(uname -n | cut -d' ' -f1)-sh | cut -d'=' -f2 | cut -d' ' -f1 | tail -1 | sed 's/;$//g')
echo "SetEnv SSH_AGENT_PID $SSH_AGENT_PID" > /etc/httpd/conf.d/keychain.conf
echo "SetEnv SSH_AUTH_SOCK $SSH_AUTH_SOCK" >> /etc/httpd/conf.d/keychain.conf
chmod 644 /etc/httpd/conf.d/keychain.conf
fi
}
В функции start сценария инициализации я добавляю в начало следующее:
start() {
setKeychain
Это выполняет предыдущую функцию, которая «динамически» устанавливает значение перед запуском Apache. Вы можете изменить это, чтобы использовать любую системную переменную.