[PHP-users 10752] 独自定義エラーハンドラ関数にてERRORを拾わない
Noriyuki TAKEI
php-users@php.gr.jp
Fri, 11 Oct 2002 19:57:42 +0900
武井です。
エラーハンドラ関数についてご質問があります。独自に定義した
エラーハンドラ関数でNOTICE、WARNINGのレベルのエラーメッセージは
拾うのですが、ERRORレベルのエラーは拾ってくれません。
ERRORレベルのエラーが出た場合、ブラウザにエラー内容が
出力されるだけで、指定したログファイルに書き出しもしません。
php.iniファイルにてerror_reportingもE_ALLにしていますし、
NOTICE、WARNINGのレベルのエラーは独自定義エラーハンドラ関数で
処理されていますので、原因については見当がつきません。
この問題を解決策をご教示願います。宜しくお願いします。
当方の環境は以下のとおりです。
OS:Windows2000Pro
PHP:4.1.2
独自定義したエラーハンドラ関数は以下のとおりです。
----------------------------- ここから -----------------------------
function error_handler ($errno, $errmsg, $filename, $linenum, $vars) {
// ● エラー発生時間
$time = date("Y-m-d H:i:s");
// ● エラーの種類を表す連想配列を定義
$errortype = array (1=>"Error",2=>"Warning",4=>"Parsing Error",8=>"Notice",16=>"Core Error",32=>"Core Warning",64=>"Compile Error",128=>"Compile Warning",256=>"User Error",512=> "User Warning",1024=>"User Notice");
$err = "[".$time."] PHP ".$errortype[$errno].": ".$errmsg." in ".$filename." on line ".$linenum;
// ● ユーザ定義エラーの場合は変数の値を記録
if ($errno == E_USER_ERROR || $errno == E_USER_WARNING || $errno == E_USER_NOTICE) {
$err .= " : value=" . serialize($vars);
}
$err .= "\n";
// ● ログに保存
error_log($err, 3, "D:\php\logs\error_log.txt");
// ● 重大なエラーはメールで通知
if ($errno == E_ERROR || $errno == E_USER_ERROR ){
mb_send_mail("admin@phpserv.jp","エラー発生通知",$err);
echo "申し訳ありません。システム上の不備によりサービスを停止中です。";
die();
}
}
// ● エラーハンドラ関数を設定
set_error_handler("error_handler");
----------------------------- ここまで -----------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−
JALインフォテック
ソリューション事業本部
eネットワーク・ソリューション事業部CTIグループ
武井 宜行(Noriyuki Takei)
E-Mail:noriyuki.takei@jalinfotec.co.jp
TEL:03-5445-7091
FAX:03-5445-7079
−−−−−−−−−−−−−−−−−−−−−−−−−−−