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

在脚本中检测 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。

答案1

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

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

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

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

答案2

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

相关内容