Apache权限被拒绝

时间:2012-08-16 17:27:42

标签: php apache permissions httpd.conf

我刚刚在Windows上安装了一个带有Php fast cgi build的新Apache 2.4.2。

然后我修改了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 个答案:

答案 0 :(得分:28)

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

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

Dave Random进一步解释:

  

经过一些实验,我发现了一个细微差别,使得这个问题成为正确的答案,这是Apache 2.3+特有的。似乎mod_authz_host指令优先于mod_access_compat指令,并且这会在目录树中一直冒泡。这意味着如果您从Apache 2.2迁移到Apache 2.4并且逐字地使用2.2 httpd.conf,它将起作用。

     

但是,如果执行2.4的新安装并将配置基于默认的2.4 httpd.conf,则Allow指令将不起作用,因为默认的顶级部分使用{{1指令而不是Require all denied,这优先于树上方的任何后续Deny from all指令。除此之外,如果你将Order / Allow / Deny指令迁移到它们的等效要求,那么你必须有机会所有这些指令,或者你会发现你得到了你没想到的403s。