[PHP-users 23074]エラー処理

m.awano awano @ main-concept.co.jp
2004年 8月 25日 (水) 01:38:40 JST


お世話になります。

PHPのエラーのクラスを作ったのですが、Parse error:が拾えません。
Parse errorもエラークラスで拾いたいのですが、どこかまずい個所ありますでしょ
うか?
その他のエラーは正しく処理されます。

おしえてください。

よろしくお願いします。



//PHPエラー処理
function php_error_handler ($errno, $errmsg, $filename, $linenum, $vars) {

	//Smartyのクラス定義を読み込む
	require_once('smarty_user.php');

	//Smartyのインスタンス生成
	$tpl = new smarty_user;



	//ユーザーエラー
	if( $errno == 512){

		//配列をシリアルから元に戻す
		$errorArray = unserialize(base64_decode($errmsg));

		for( $i=1; $i < count($errorArray); $i++ ) {
			$tpl->append("errormsg",$errorArray[$i]);
		}

		$tpl->display("member/error_user.tpl");


		exit();

	//システムエラー
	}elseif( $errno <> 8){

		//タグ変数の置換
		$tpl->assign("errormsg",$GLOBALS["sys_error"]);

		//テンプレートを読み込んで出力
		$tpl->display("member/error_system.tpl");


		// エラー発生時間
		$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 = "<errorentry>\n";
	    $err .= "\t<datetime>".$time."</datetime>\n";
	    $err .= "\t<errornum>".$errno."</errornum>\n";
	    $err .= "\t<errortype>".$errortype[$errno]."</errortype>\n";
	    $err .= "\t<errormsg>".$errmsg."</errormsg>\n";
	    $err .= "\t<scriptname>".$filename."</scriptname>\n";
	    $err .= "\t<scriptlinenum>".$linenum."</scriptlinenum>\n";
        $err .=
"\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
	    $err .= "</errorentry>\n\n";

		//メール通知
		mb_send_mail("awano @ main-concept.co.jp","エラー発生通知",$err);

		//ログに保存
		error_log($err, 3, $GLOBALS["log_file"]);

		exit();

	}
}


//PEARエラー処理
function pear_error_handler ($err_obj) {
	trigger_error ($err_obj, E_USER_ERROR);

}


//errorクラスの設定
class error_user {

	function error_user () {

		//共通変数設定ファイルを読み込む

		error_reporting ($GLOBALS["error_report"]);
//		error_reporting (E_ALL);

		//PHPエラーハンドラ関数を設定
		set_error_handler ('php_error_handler');

		require_once 'PEAR.php';

		//PEARエラーハンドラ関数を設定
		PEAR::setErrorHandling (PEAR_ERROR_CALLBACK, 'pear_error_handler');
	}

}


===============================
株式会社メインコンセプト
淡野 誠人



PHP-users メーリングリストの案内