[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を入れなければいいだけじゃん?」という結論に達したわけです。

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

[JavaScript]: IEでは、"id"や"name"属性の値をオブジェクト名には使えない

2008/08/13 12:30:34
カテゴリ:Web > JavaScript

大したネタではないんですが、「へ~」っと思ったのでエントリー。

要するにタイトルのままなんですが、

<input type="text" id="hoge" />

みたいなのに対して、JavaScriptで、

hoge = document.getElementById('hoge');

と、ID名と、オブジェクト名を同じにすると、IEではエラーになります。
自分は Firefoxでデバッグなんですが、Firefoxでは普通に動いてたので、
IEで動作確認したときに戸惑いました。

横着せずに、hogeObjみたいにちゃんと名前付けなさいよ、と
神様が言ってるんでしょうね。

ちなみに、"name"属性も同じでした。
他のブラウザは確認してませんが、まぁ、それほどの問題でもないので、パス、です。