最近の更新
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が動作しないときのチェック事項
- 一番シンプルなperlプログラムで動作確認する
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print "test";
- ディレクトリのパーミッション、CGIのパーミッションを確認する
- Perl、sendmail、その他 のパスはあっているか確認する.
- サーバのエラーログを確認する
- PerlをUTF-8文字コードで記述するとうまく動かない
というような情報もあります。
*********
- Perl 時刻の処理はとりあえずこれで 2008/12
- Perl のエラー解決と疑問点整理 2008/08
- Perl の基本
その他の項目