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