Как определить переменную в файле Apache httpd.conf? - PullRequest
58 голосов
/ 04 июля 2011

Я хочу определить переменную в файле конфигурации httpd.conf сервера Apache.

Пример: переменная static_path = C:\codebase\snp_static

, и я хочу использовать эту переменную (static_path) в httpd.conf там, где это необходимо.

Скажите, пожалуйста, как определить переменную в файле httpd.conf?

Ответы [ 3 ]

115 голосов
/ 31 марта 2013

В 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

4 голосов
/ 13 февраля 2015

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 голосов
/ 14 июня 2012

Если все, что вам нужно, это простая замена переменных внутри httpd.conf, то определите обычную переменную среды оболочки для пользователя, который запускает Apache, а затем используйте синтаксис $ {ENVVAR}, чтобы обратиться к нему внутри вашего файла httpd.conf, см Apache docs

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