我在 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 指令。我已经这样做了。现在可能是什么问题?
这里有两件事可以尝试:
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
或类似的。
您已设置授权,但未进行身份验证。因此,虽然“要求所有已授予”将授予所有经过身份验证的用户访问权限,但您的用户实际上并未进行身份验证。
归档时间: |
|
查看次数: |
47184 次 |
最近记录: |