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
переменная окружения.