Apache DocumentRoot 不会改变

Apache DocumentRoot 不会改变

我正在尝试在我的 Arch Linux 机器上设置 Apache 2 服务器。到目前为止,一切都运行良好,包括 https 和 php,但现在我想将DocumentRoot从默认更改/srv/http/var/www/foo。我分别将DocumentRoot /srv/http和更改<Directory "/srv/http">DocumentRoot /var/www/foo<Directory "/var/www/foo">,并使用 重新加载配置systemctl restart httpd。现在,当我尝试访问https://localhost或 中的任何内容时,我收到 403 错误。

进一步的调查发现,更改<Directory ...>声明会产生影响,但更改则DocumentRoot不会。当我着手Require all granted消除<Directory />这些 403 错误时,Apache 仍在尝试从 提供文档/srv/http。例如,我将包含 的 test.php 文件放入<?php echo exec('pwd'); ?>和 中/srv/http/,并/var/www/foo/访问浏览器的https://localhost/test.php输出/srv/http。尝试访问位于/var/www/foo但不在 的文档/srv/http将导致 404 错误。

为什么 Apache 仍在使用?我把中/srv/http的所有 都改成了,并多次重启了 Apache ,但我的文档根目录就是没有变化。根据 Apache Arch Wiki 文章,我已经做了所有必要的事情。/srv/http/var/www/foo/etc/httpd/conf/httpd.conf

我当然可以通过符号链接/srv/http到所需的位置,但这似乎不是正确的方法。

httpd.config以下是我认为可能相关的部分:

<Directory />
    AllowOverride none
    Require all granted     # Will of course change to denied again once everything works
</Directory>

DocumentRoot "/var/www/foo"

<Directory "/var/www/foo">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

当然,/var/www/foo其本身以及所有父目录至少都具有755权限。

答案1

你有什么虚拟主机中的部分httpd.conf?如果您有一个VirtualHost部分将/srv/http其设置为DocumentRoot,则 Apache 可能正在使用该VirtualHost部分中的目录,即使您已更改了部分DocumentRoot外部的值VirtualHost

相关内容