2008年7月25日金曜日

centos4+apache cgiトラブルー

perlのcgiがInternal server errorで全く動かない。errorlogを見てみると

Premature end of script headers: ~ 
(2) No such file or directory: exec of ' ~

と出力されている。

これはなんぞと調べてみて分かったことは、なにやらFTPで転送した際にcgiの改行コードがLFではなくCR+LFになっていたため、ファイル先頭のperlパスにいらない文字(この場合CR)がくっついて、perlがみつからないというエラーだった。

FTPクライアントはFFFTPを使っていて、特に文字コードうんぬんの設定はない。サーバに合わせて改行コードを変更してくれるはずなんだけど、上手く動いていないみたい。ぶっちゃけバイナリモードで改行コードLFのcgiを転送すれば動作するんだろうけど、いちいちCR+LFをLFにするのも面倒です。

ということでサーバ側に何か設定がないか調べてみた。centosのftpはvsftpdのようなので、/etc/vsftpd/vsftpd.confを開いてみる。ありましたasciiなんちゃらの設定。コメントアウトされていたのでコメントを外し、YESに設定を変更し、サーバを再起動。めでたくLFに変更されて転送されました。

0 件のコメント: