Назад | Перейти на главную страницу

Определение в скрипте, является ли корень apache2 / var / www или / var / www / html

Apache2 недавно изменил корневой каталог по умолчанию с / var / www на / var / www / html, что нарушает скрипты, которые я распространяю для установки некоторого программного обеспечения, которое я написал. Есть ли надежный способ определить по сценарию, что это такое? Я бы предпочел достаточно портативное решение, скажем, работающее в Linux, BSD и MacOS.

Думаю, я мог бы проверить наличие подкаталога html, но это не кажется надежным.

Я тоже думал об этом:

source /etc/apache2/envvars ; apache2 -S

Это создает вывод, который на самом деле кажется неправильным:

Main DocumentRoot: "/var/www"

Фактически, корневой каталог на этом компьютере - / var / www / html.

Это будет зависеть от того, сколько виртуальных хостов вы настроили, но вы наверняка можете догадаться, используя такой код:

 root=$(rgrep DocumentRoot /etc/apache2/ | awk '{print $NF}' | head -n 1)
 echo $root

Это найдет DocumentRoot настройка, указанная ниже /etc/apache2, и распечатайте первый.

Вы можете легко использовать этот подход, чтобы увидеть, найдете ли вы любой упоминание о /var/www/html и используйте его, если так.

Если ваш скрипт вызывается через CGI или FastCGI, он должен найти корень документа в DOCUMENT_ROOT переменная окружения.