外部サーバCGI 解消しました

| コメント(0) | トラックバック(0) |

今度は外部サーバが・・・

結構簡単なミスでした。

 え~っと、結果から言うと、文字コードのミスだった。

エラーの時に、こんなエラーコードが出ていた。

[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
まあ、動いてよかったよかった。

トラックバック(0)

トラックバックURL: https://www.letstryit.net/mt/mt-tb.cgi/31

コメントする

アーカイブ

カウンタ

Total
Today
Yesterday

IPv6 Ready

Powered by Movable Type 7.0