« 2010年2月 | メイン | 2011年7月 »

2011年6月 5日

CGIが動かない

本番運用中のサーバーのとあるCGIなんですが・・・

新規に運用を始めたテスト用サーバーに丸ごとコピーしてきて、いざ実行しようとするとエラー表示が。
サーバーログを見てみると「Premature end of script headers」と・・・

同様の現象のおこっているという記事をみると、対症療法として「#!/usr/bin/perl --」と書きなおせとある。
たしかにテスト環境でも「--」を付け加えると正常に動いてくれる。

ならばいっそのこと、全てのCGIに「--」を付け加えようかと一瞬考えたものの、何のオプションだかわからないまま全ファイルを修正するのも嫌だし、そもそも本番環境に影響を与えないとも限らない。

で、原因をしらべてみるとどうやらFTPで転送するときの改行コードに鍵があることがわかった。
どうやら「#!/usr/bin/perl」の直後に「CR」が入っているからファイルを見つけられずにエラーとなっていたらしい。※そういえばたしかにエラーログにも1行上にnot foundとあった気がする。

根本的な解決方法としては vsftpdでAsciiモードによる、アップロード/ダウンロードを許可設定すればいいらしい。
vsftpd設定ファイルは、
/etc/vsftpd.conf または
/etc/vsftpd/vsftpd.conf で、
ascii_upload_enable=YES ←先頭の#を削除 ascii_download_enable=YES ←先頭の#を削除
と修正すればいいのだとか。

実際ワタシの環境でも上記で完全解決。
いやあ、よかったよかった(^^)

それにしても、CRLFをLFに変換なんてまったく意識してなかった・・・
でも実際にいろんなところでいろんなソフトが解決してくれているおかげで、他の事に時間を割けるわけで、非常にありがたいと思ったわけです。

投稿者 yamatec : 16:21 | トラックバック (0)

1年以上放置してた(^^;

単純に書き込みツールが無いというだけで、気がつけば1年以上も放置してましたうちのブログ(^^;

で、ひさびさに書いたと思ったら自分用メモですが・・・

投稿者 yamatec : 16:07 | トラックバック (0)