Как определить переменную в файле apache httpd.conf?
Я хочу определить переменную в конфигурационном файле httpd.conf
сервера Apache.
Ex: переменная static_path = C:\codebase\snp_static
и я хочу использовать эту переменную (static_path) в httpd.conf
, где это необходимо.
Скажите, пожалуйста, как определить переменную в файле httpd.conf
?
Ответы
Ответ 1
Внутри httpd.conf объявите свою переменную с помощью: Define
(желательно в первой строке)
Синтаксис: Define
variable-name
variable-value
Таким образом:
#The line below creates the variable [static_path]
Define static_path C:/codebase/snp_static
Вы можете использовать эту переменную следующим образом:
ServerRoot = ${static_path}
...
DocumentRoot = ${static_path}
...
<Directory ${static_path}>
...etc.
Вы даже можете комбинировать несколько переменных:
#Below, I am going to combine variables [server_space] and [static_path]
Define server_space c:/
Define static_path codebase/snp_static
...
ServerRoot = ${server_space}${static_path}
...
DocumentRoot = ${server_space}${static_path}
...
<Directory ${server_space}${static_path}>
...etc.
Документация: http://httpd.apache.org/docs/2.4/mod/core.html#define
Ответ 2
Если вам нужна простая подстановка переменных внутри httpd.conf, тогда определите обычную переменную среды оболочки для пользователя, который запускает Apache, а затем используйте синтаксис ${ENVVAR}, чтобы ссылаться на него внутри вашего файла httpd.conf, см. Документы Apache
Ответ 3
Apache2.4 Я исследовал это, и вот что сработало для меня.
и протестирован с использованием httpd_z.exe -t -D DUMP_RUN_CFG
RESULTS:::
ServerRoot: "C:/path/core/apache2"
Main DocumentRoot: "C:/path/apache/htdocs"
Main ErrorLog: "C:/path/core/apache2/logs/error.log"
Mutex rewrite-map: using_defaults
Mutex default: dir="C:/path/core/apache2/logs/" mechanism=default
PidFile: "C:/path/core/apache2/logs/httpd.pid"
Define: DUMP_RUN_CFG
Define: US_ROOTF=C:/path **THIS IS THE ROOT PATH VARIABLE I JUST MADE**
Define: php54
#<IfDefine TEST>
# Define servername test.example.com
#</IfDefine>
#<IfDefine !TEST>
# Define servername www.example.com
# Define SSL
#</IfDefine>
#DocumentRoot /var/www/${servername}/htdocs
<IfDefine US_ROOTF>
Define US_ROOTF C:/PATH **The path i want the variable for**
</IfDefine>
<IfDefine !US_ROOTF>
Define US_ROOTF C:/PATH **The path i want the variable for**
# Define SSL
</IfDefine>
#DocumentRoot /var/www/${servername}/htdocs OPTIONS ON HOW TO USE
EXAMPLE of use
ServerRoot = ${US_ROOTF}
<IfDefine php54>
LoadFile "${US_ROOTF}/core/php54/icudt53.dll"
PHPIniDir "${US_ROOTF}/core/php54/php_production.ini"
Мне сказали никогда не использовать прямой HARD путь к чему-либо, когда что-то предлагали в Интернете, всегда используйте переменные, чтобы защитить вашу систему.
Я нашел трудный путь, это так верно. Теперь я, наконец, понял, как установить переменные для всех служб, связанных с Apache, которые я им использую.
Надеюсь, что это тоже поможет.
Ответ 4
Поздно к вопросу, но недавно эта проблема возникла и исправлена следующим образом:
DEFINE path "C:\path/to the/directory"
Затем позже используйте так:
DocumentRoot ${path}
<Directory ${path}>
Примечание: В пути используйте\после буквы диска
Ответ 5
Если ваш проект apache не принимает системные переменные окружения, которые мы добавили в bashrc,
Мы можем напрямую экспортировать переменные в
Файл /etc/apache2/envvars
Пример: экспорт ADMIN = 'Bibin'