在脚本中检测apache2根目录是/ var / www还是/ var / www / html

Apache2最近将默认根目录从/ var / www更改为/ var / www / html,这打破了我为了安装我编写的一些软件而分发的脚本。 有一个可靠的方法来检测脚本,它是? 我更喜欢一个可以在Linux,BSD和MacOS上运行的合理的便携式解决scheme。

我想我可以检查的HTML子目录的存在,但这似乎不是很防弹。

我也想到了这个:

source /etc/apache2/envvars ; apache2 -S 

这产生了实际上似乎错误的输出:

 Main DocumentRoot: "/var/www" 

实际上,这台机器上的根目录是/ var / www / html。

这将取决于您设置了多less个虚拟主机,但是您可以通过使用如下代码来猜测:

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

这将find在/etc/apache2下指定的DocumentRoot设置,并打印第一个。

你可以很容易地使用这种方法来查看你是否find/var/www/html 任何提及,如果是的话。

如果您的脚本通过CGI或FastCGI调用,它应该在DOCUMENT_ROOT环境variables中find文档根目录。