[PHP]: You don't have permission to access /php/php.exe/index.php on this server. => Windowsで、PHP4のCGIモードが動かないのは、Apacheのバージョン

2008/08/27 20:05:19
カテゴリ:Web > PHP

結論から言うと、Windows上にインストールした「Apache2.2 + PHP4.4.9」では、"CGIモード"はおろか"モジュールモード"でも動きませんでした。
で、Apacheを、「2.2」から「2.0」にバージョンダウンさせたら、"CGIモード" も "モジュールモード" も、難なく動作しました。

PHP5では「php5apache2_2.dll」があるんでモジュールモードのときは"httpd.conf"からこいつをロードしてあげればいいわけですが、PHP4.4.9には「php4apache2_2.dll」がありません。
「php4apache2_2.dll」をダウンロードできるサイトを紹介しているブログもいくつかありましたが、該当するファイルは削除されてしまったようでしたので、「Apache2.0」へのバージョンダウンで対応。

なんでこんなことで、今日一日はまってたか、と言うと・・・

普通、PHPでシステム組むときに共有サーバなんて使いませんよね。
でも今回はお客さんの都合(稟議がどうたら、とか、決済がどうたら、とか)で「どうしても現在借りてるホスティングサーバで」と押し切られ、 当然と言えば当然ですが共有サーバのPHPはCGIモードで、モード切り換えも不可。
しかもPHPは、「PHP4」とのこと。

んで、CGIモードで動くテスト環境を作ろう、として「はまった」わけです。

具体的には、

Apache 2.2.9 (apache_2.2.9-win32-x86-no_ssl-r2.msi)
PHP 4.4.9 (Windows Binaries)

で普通にXPにインストール。
で、Apacheまでは普通に動作確認して、PHPの設定をCGIモード用に、httpd.confで、

ScriptAlias /php/ "c:/php4/"
AddType application/x-httpd-php .php .html
Action application/x-httpd-php "/php/php.exe"

として、Apache再起動して、"http://localhost/index.php"にアクセスしたら、

Forbidden
    You don't have permission to 
        access /php/php.exe/index.php on this server.

になっちゃいました。

ちゃんと、「php.exe/index.php」で実行しようとしてる、ってことは"CGIモード"で動こうとはしてるってこと?
と思いながらも、「環境変数が~!」とか、「MIMEタイプが~!」とか、「ディレクトリは"/"か"¥"か~!」とか、さんざっぱら試行錯誤したあげく、 ググってるうちに前述の「php4apache2_2.dllじゃないと動かないっぽい」という情報にたどりつき、 「要するに、Windows上でApache2.2にPHP4.4.9を入れなければいいだけじゃん?」という結論に達したわけです。

あ~、めんどかった。
他にも共有サーバの落とし穴がありそうで怖いです。
頼むからうちで借りてるサーバに引越してくれ~!