我刚刚安装了一个新的 Apache 2.4.2,在 Windows 上构建了 Php fast 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 您无权访问此服务器上的/。
任何想法可能是什么问题?
最佳答案
这是正确的方法:(感谢 DaveRandom)
<Directory "C:/SITE/localhost/www">
Options ExecCGI
AllowOverride all
Require all granted
</Directory>
Dave Random进一步解释:
After a little experimentation with this, I have discovered the nuance that makes this the correct answer, which is specific to Apache 2.3+. It seems that
mod_authz_host
directives take precedence overmod_access_compat
directives, and this bubbles all the way up the directory tree. What this means is that if you are migrating from Apache 2.2 to Apache 2.4 and you use your 2.2httpd.conf
verbatim, it will work.If, however, you perform a new install of 2.4 and base your config on the default 2.4
httpd.conf
,Allow
directives won't work, because the default top level section uses aRequire all denied
directive instead ofDeny from all
, and this takes precedence over any subsequentAllow
directives higher up the tree. The long of the short of this is that if you are migrating your Order/Allow/Deny directives to their equivalent Requires, then you must chance all of them or you will find you get 403s you weren't expecting.
关于php - Apache 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11992466/