エラーメッセージが詳しく出るようにするには

[上に] [前に] [次に]
ボント [E-Mail] 1999/11/30(火) 10:25:19
会社ではNT+IIS4.0+perlの環境でCGIを勉強中なのですが、
エラーメッセージが「こんなエラーでこの行が間違ってるよ」
と表示されます(もちろん英語でですが)
しかし、個人的に借りているレンタルサーバ(UNIX)ではエラーの種類にもよるのですが
「Internal Server Error」のメッセージしか出なくて、
どこら辺が間違っているのか具体的に教えてくれません。
これでは非常にデバッグしにくいです。
なぜエラーメッセージが違うのでしょうか?
知っている人がいたらお願いします。

便乗じいさんR 1999/11/30(火) 10:38:06
なぜ違うのかは分からんが、デバッグしたいんじゃったら、これはどうじゃ。
わしもついさっき知ったばかりなんじゃが、便利じゃぞ。
../199911/99110401.htm

telnetでつないで、
perl -c スクリプトファイル名
perl -wc スクリプトファイル名

B-Cus 1999/11/30(火) 13:32:31
> なぜエラーメッセージが違うのでしょうか?
なぜなら、普通 レンタルサーバ上でデバッグするものではないから。
ローカルに perl と WWWサーバを入れてデバッグするものだから。

あと、エラーメッセージがそのまま表示されると、
セキュリティホールになり得ます。
 クラッカー「お、ここにこういう値を入れるとこういうエラーになるのか。
       じゃあ、ここをこーすると…あ、ファイルが消せた」
とかね。

ボント 1999/11/30(火) 15:03:26
[[解決]]
便乗じいさんRさん、B-Cusさん、ありがとうございます。

>ローカルに perl と WWWサーバを入れてデバッグするものだから。
おっしゃる通りでございます。

>ローカルに perl と WWWサーバを入れてデバッグするものだから。
どちらも入れたのですが、使ってませんでした。以後気を付けます。
しかし、ホントためになりますです。

B-Cus 1999/11/30(火) 15:38:18
とはいえ、実際のサーバで動かさないとエラーが顕在化しないことも
確かにあります。そういうときは WWW サーバのログを見ます。
apache なら /var/log/ か /usr/local/apache/logs あたりに
あることが多いです。普通全ユーザのエラーが全てエラーログに
入ってますが、管理者の設定次第で各ユーザのホームディレクトリに、
そのユーザのみのエラーログを書き出すことも可能です。

あと、一般ユーザでも、(perlのモジュールの) Carp を使ったら
エラーを表示できたような気も。

ふじ 1999/11/30(火) 15:49:23
> あと、一般ユーザでも、(perlのモジュールの) Carp を使ったら
> エラーを表示できたような気も。

CGI::Carp って便利なモジュールがあります。

最初に
use CGI::Carp qw(fatalsToBrowser);
としておけば、Perl のエラーメッセージを捕まえてブラウザで
見られるようにしてくれます。

ヘッダの処理とかを気にしないで die しても大丈夫。
open IN, "< hoge.txt" or die "can't open hoge.txt $!";

[上に] [前に] [次に]