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
环境变量中找到文档根目录。