16

我刚刚安装了一个新的 Apache 2.4.2,在 windows 上构建了 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.

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

4

1 回答 1

29

这是正确的方法:(感谢 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 并且httpd.conf逐字使用您的 2.2,它将起作用。

但是,如果您执行 2.4 的新安装并将配置基于默认 2.4 httpd.confAllow则指令将不起作用,因为默认的顶级部分使用Require all denied指令而不是Deny from all,并且这优先于Allow树上更高的任何后续指令. 总而言之,如果您将 Order/Allow/Deny 指令迁移到其等效的 Requires 指令,那么您必须对所有指令进行尝试,否则您会发现您得到了意想不到的 403。

于 2012-08-16T18:23:18.763 回答