web-dev-qa-db-ja.com

Apache許可が拒否されました

新しいApache 2.4.2をインストールして、Php高速cgiビルドを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.

問題となる可能性のあるアイデアはありますか?

16
Anonymous

これは正しい方法でした:(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ディレクティブを同等の要件に移行する場合、それらすべてにチャンスを与える必要があるということです。そうしないと、予期していなかった403が表示されます。

29
Anonymous