エラーメッセージが詳しく出るようにするには
[上に]
[前に]
[次に]
ボント
[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 $!";
[上に]
[前に]
[次に]