結構簡単なミスでした。
え~っと、結果から言うと、文字コードのミスだった。
エラーの時に、こんなエラーコードが出ていた。
[Thu Mar 26 20:25:14 2009] [error] [client IP Address] suexec policy violation: see suexec log for more details
[Thu Mar 26 20:25:14 2009] [error] [client IP Address] Premature end of script headers: *.cgi
エラーコードのPermature end of script headersで、検索してみると、大量にあり、
いろいろ対策を講じてみた。
1. 改行コードをLFにする
2. 文字コードをEUCにする
3. バイナリモードで転送する
4. #!/usr/bin/perl - という風に最後に[半角スペース]- を追加してみる
まあ 2番目がヒットしたわけで...
私は、CGIをUTF-8で転送していた。(^_^;
MTに整えるためにそうした訳なんだが、単に文字コードを変換して保存だけでは動かないらしい。(当たり前なんだろうな~)
UTF-8で保存すると、テキストの先頭にBOM(Btye Order Mark) というデータがつき、先頭行の#!/usr/bin/perl が文字化けして、CGIが動かなくなる。
これによってCGIが動かなかったわけだ~!!つまらんミスだねw
BOMなしでも保存できるため、それで保存した場合は、動いたが、CGIの出力が、文字化けする。(ちなみに、BOMなしは、UTF-8Nとも呼ばれる)
どうも、suEXEC の方ばかり気にしていて、CGI自体には問題ないと思っていたのがいけなかったらしい。これの問題に気づいた訳は、ssh を使って vi でCGIファイルを開いたら文字化けしていたから・・・
下手にCGIを改造するのはよくないねw
まあ、動いてよかったよかった。
コメントする