我刚刚安装了一个新的Apache和PHP的快速CGI 2.4.2在Windows上构建。
然后我修改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.
任何想法可能是什么问题?
这是正确的方式做到这一点:(感谢DaveRandom)
<Directory "C:/SITE/localhost/www">
Options ExecCGI
AllowOverride all
Require all granted
</Directory>
戴夫随机进一步解释说:
与此有点实验后,我发现,使这个正确的答案,这是针对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
指令将无法正常工作,因为默认的顶层部分采用一个Require all denied
指令,而不是Deny from all
了,这优先于任何后续Allow
指令上涨树。 长短期的这种的是,如果要迁移您的订单/允许/拒绝指令为等效的要求,那么你一定几率所有的人,否则你会发现你得到你没有想到403S。