16

WindowsにPhp fast cgiビルドを使用して新しい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.

何が問題なのですか?

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 に移行する場合に、2.2 をhttpd.conf逐語的に使用すると、それが機能するということです。

ただし、 2.4 の新規インストールを実行し、構成をデフォルトの 2.4 に基づいている場合httpd.confAllowディレクティブは機能しません。これは、デフォルトの最上位セクションが のRequire all denied代わりにディレクティブを使用し、これがツリーの上位にあるDeny from all後続のディレクティブよりも優先されるためです。 Allow. 要するに、Order/Allow/Deny ディレクティブを同等の Require に移行する場合、それらすべてにチャンスを与える必要があります。そうしないと、予期しない 403 が返されることに気付くでしょう。

于 2012-08-16T18:23:18.763 に答える