最近の更新

Internal Server Error でCGIプログラムが動作しない

新サーバでCGIが動作しません。「Internal Server Error 」です。

サーバのログを見ると

Premature end of script headers

と書かれています。よく見るエラーですが、なんのことでしょうか?

Perlスクリプトの中に文法的ミスがあるのでしょうか。 

思いつくままに、手当たりしだい、ソースの修正やパーミッション変更などしてみますが、動作する気配がまったくありません。

すったもんだの末、1日がかりで(自然)解決しました。

でも、何をやったというわけでもありません。正直どうしてうまくいったのか原因が不明です。

もしかしたら、と思いつくことといえば、FFFTPの異常くらいでしょうか。

というのは、あれこれ修正、アップをやっているうちに、FTP接続できなくなってしまいました。時間を置いて接続しても接続できません。FFFTPを再起動しました。それでも接続不能のため、PC自体を再起動したところ、正常に接続できるようになりました。(これに気がつくのに2時間くらいかかりました。サーバ異常だとばかり思ってましたので)PCを1週間くらいつけっぱなしだったのがよくなかったのでしょうか。

で、普通にcgiプログラムをアップロードしたところ、何事も無く、まったくあっさりと動作しました。おえー??っという感じでした。

延べ1日かかっているため、「test」の文字が表示されたときめちゃくちゃ感動しました。なんだったんでしょうか。まったく。

その後もエラーに悩まされますが、それはこちら「Perl のエラー解決と疑問点整理」のページで。

問題解決に直接役には立ちませんでしたが、いろいろ調べましたのでまとめておきます。もしかしたら今後の役に立つかもしれません。

CGIが動作しないときのチェック事項

  1. 一番シンプルなperlプログラムで動作確認する

    #!/usr/bin/perl
    print "Content-type:text/html\n\n";
    print "test";

  2. ディレクトリのパーミッション、CGIのパーミッションを確認する
  3. Perl、sendmail、その他 のパスはあっているか確認する.
  4. サーバのエラーログを確認する
  5. PerlをUTF-8文字コードで記述するとうまく動かない
    というような情報もあります。

 

*********

目次(ホーム)

その他の項目