Apache2“要求所有授予”不起作用

hai*_*dev 12 apache-2.4

我在 Debian 测试中全新安装了 Apache2,并在如下目录中配置了一个虚拟主机:

<Directory "/path/to/project">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

但是,当我访问它时,它向我显示了 403 Forbidden 错误,并且错误日志显示:

[Mon Sep 23 22:07:57.249276 2013] [authz_core:debug] [pid 8599] mod_authz_core.c(802): [client 127.0.0.1:49057] AH01626: authorization result of Require all denied: denied
[Mon Sep 23 22:07:57.249349 2013] [authz_core:debug] [pid 8599] mod_authz_core.c(802): [client 127.0.0.1:49057] AH01626: authorization result of <RequireAny>: denied
[Mon Sep 23 22:07:57.249361 2013] [authz_core:error] [pid 8599] [client 127.0.0.1:49057] AH01630: client denied by server configuration: /path/to/project/some_file
Run Code Online (Sandbox Code Playgroud)

如果我使用“要求全部授予”,为什么会显示“要求全部拒绝的结果:被拒绝

任何用户都可以读取它们的文件,以防万一我尝试将所有者更改为 Apache(www-data)而没有运气。此外,默认主机http://localhost正常工作,phpmyadminhttp://localhost/phpmyadmin也正常工作。

我在 Internet 上找到的所有帮助都是关于用 Require 替换 Order 指令。我已经这样做了。现在可能是什么问题?

Dou*_*oug 5

这里有两件事可以尝试:

1) 运行apachectl -t以检查文件的语法是否有效。

2) 运行apachectl -S以显示正在解析哪些文件

例如,您可能正在编辑 /usr/local/etc/apache2/2.4/httpd.conf,对吗?...但是如果你运行 apachectl -S 你可能会看到:

VirtualHost configuration:
*:80                   localhost (/private/etc/apache2/extra/httpd-vhosts.conf:23)
Run Code Online (Sandbox Code Playgroud)

IE。虚拟主机正在覆盖您的 httpd.conf,并且可能包含它自己的Require all denied或类似的。


Den*_*ker 4

您已设置授权,但未进行身份验证。因此,虽然“要求所有已授予”将授予所有经过身份验证的用户访问权限,但您的用户实际上并未进行身份验证。

  • 那么应该在哪里设置身份验证呢?不是很清楚... (10认同)
  • 虽然技术上是正确的,但这并不能回答问题。“要求所有授予”明确允许所有访问并且不需要任何身份验证。当你隐喻地敞开大门时,进行身份验证是没有意义的。 (2认同)