新しい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.
問題となる可能性のあるアイデアはありますか?
これは正しい方法でした:(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.2httpd.conf
をそのまま使用すると、問題なく動作します。ただし、2.4の新規インストールを実行し、デフォルトの2.4に基づいて設定を行う場合、
httpd.conf
、Allow
ディレクティブは機能しません。これは、デフォルトの最上位セクションがRequire all denied
を使用しているためです。Deny from all
ではなくディレクティブ。これは、ツリーの上位にある後続のAllow
ディレクティブよりも優先されます。これが不足しているのは、Order/Allow/Denyディレクティブを同等の要件に移行する場合、それらすべてにチャンスを与える必要があるということです。そうしないと、予期していなかった403が表示されます。