CGI-BBS > CGI > Perl > エラー500をなくしたい。


カレッヂ
カレッヂ


質問者 ぽてと  投稿日 11/27(木) 13:41:41
自分のPCを使ってCGIの動作確認をしているのですが
エラー500が確認されました。

自PCの場合はパーミッションが関係ないのでエラー=スクリプトに問題あり
ということですが、以下のように表示されます

Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ: 

./custom.pl did not return a true value at C:\www\menu\so\so.cgi line 24.

so.cgiのライン24のエラーということで、ラインを確認してみたところ
以下のような形でした

require "./custom.pl";

custom.plのディレクトリ指定が間違っているのかと思い確認してみたのですが
問題はありませんでした。

この場合、custom.pl自体のスクリプトが間違っているのでしょうか?
どうかよろしくお願いします。

プロバイダ参照:
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:メモ帳
FTPソフト:自PC使用のためなし
サーバ移転:していない
改造:していない
CGI習熟度:firsttime

回答者 まさ  [削除]  投稿日 11/27(木) 14:02:39
custom.plの最後の行に
1;
がないんでは。

質問者 ぽてと  [削除]  投稿日 11/27(木) 16:50:57
まささん、返信ありがとうございます。
えと、custom.plの最後の方を下記に抜き出してみたのですが

///////////////////////////////////////////////////////////
<form method="POST" action="$script_url">
<input type="submit" value="トップに戻る"><p>
</form>
 <p>
END_OF_TEXT
}

///////////////////////////////////////////////////////////

上記の
END_OF_TEXT
}←の部分に"1;"
を追加する感じでいいのでしょうか?
質問者 ぽてと  [削除]  投稿日 11/27(木) 17:39:25
まささん、ありがとうございます。
なんとか動作できるようになりました。
ありがとうございます^^。

えと、1;をつけることでなんでできたのか
よかったら教えていただきたいのですが
おねがいできないでしょうか?
回答者 まさ  [削除]  投稿日 11/27(木) 18:16:39
requireは、読み込むファイルの最後に評価した引数の値によって
うまく実行されたかどうかを判定します。

./custom.pl did not return a true value at C:\www\menu\so\so.cgi line 24.

このエラーの内容からも分かるとおり、requireが真の値を返さなかったことに対して
怒られています。
だから、「1;」を記述して「真」を返すという慣習があるのです。

一種のおまじないのようなものです。
requireで読まれるファイルの最後の行には必ず「1;」を書くと覚えておいて下さい。


質問者 ぽてと  [削除]  投稿日 11/28(金) 03:44:56
まささん、ありがとうございます。
そうだったんですね。
結構重要なとこですね。
覚えておきますー。
今回はありがとうざいましたー。

このページは終了したので返信(回答)は書きこめません
 


Web裏技