Apache 权限被拒绝

2022-08-31 00:45:22

我刚刚在Windows上安装了一个新的Apache 2.4.2,带有Php快速cgi构建。

然后我修改了httpd.conf,添加了以下内容:

LoadModule fcgid_module modules/mod_fcgid.so  
FcgidInitialEnv PHPRC "C:/SITE/PHP"
AddHandler fcgid-script .php
FcgidWrapper "C:/SITE/PHP/php-cgi.exe" .php

DocumentRoot "C:/SITE/localhost/www"
<Directory "C:/SITE/localhost/www">
    Order allow,deny
    Allow from all
</Directory>

但是,当我尝试打开我的网站时,它说:

Forbidden You don't have permission to access / on this server.

任何想法可能是什么问题?


答案 1

这是正确的方法:(感谢DaveRandom)

<Directory "C:/SITE/localhost/www">
    Options ExecCGI
    AllowOverride all
    Require all granted
</Directory>

Dave Random进一步解释道:

经过一些实验,我发现了使这成为正确答案的细微差别,这是Apache 2.3 +所特有的。似乎指令优先于指令,这一直沿着目录树向上冒泡。这意味着,如果您要从 Apache 2.2 迁移到 Apache 2.4,并且逐字使用 2.2,它将起作用。mod_authz_hostmod_access_compathttpd.conf

但是,如果您执行 2.4 的新安装,并且基于默认的 2.4 进行配置,则指令将不起作用,因为默认的顶级部分使用指令而不是 ,并且这优先于树上方的任何后续指令。长话短说,如果您要将订单/允许/拒绝指令迁移到其等效的“要求”,那么您必须有机会将它们全部放入,否则您会发现您得到了意想不到的403。httpd.confAllowRequire all deniedDeny from allAllow


答案 2

推荐