'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'); function handleError ($level, $message, $file, $line, $err_vars) { // エラー発生日時(エラーID) list($usec, $sec) = explode(" ", microtime()); $error_id = date('YmdHis', (float)$sec) . round(100 * (float)$usec); $current_datetime = date('Y-m-d H:i:s', (float)$sec); // セッションコントローラ $session_controller = new SessionController(); // if ($level & ERROR_LEVEL) { // if ($level & ERROR_ALL) { //---------------------------------------------------- // ログファイル用エラーメッセージ //---------------------------------------------------- $err_detail = debug_backtrace(); // POSTパラメータ $post_param = ''; foreach ($err_vars['_POST'] as $key => $val) { // ログに出力したくないパラメータを指定 if (!preg_match('/(password|passwd|lpwd|mpwd|lid|mid)$/', $key)) { $post_param .= " " . $key . ' => ' . $val . "\n"; } } // GETパラメータ $get_param = ''; foreach ($err_vars['_GET'] as $key => $val) { // ログに出力したくないパラメータを指定 if (!preg_match('/(password|passwd|lpwd|mpwd|lid|mid)$/', $key)) { $get_param .= " " . $key . ' => ' . $val . "\n"; } } $err_str = $current_datetime . ":" . $error_id . ":" . $this->error_level[$level] . ":" . "$message - $file ($line)\n" . "USER_ID:" . $session_controller->getUID() . "\n" . "USER_ORDER:" . $session_controller->getUserOrder() . "\n" . "REMOTE_ADDR:" . $session_controller->getRemoteAddr() . "\n" . "POST:\n" . $post_param . "\n" . "GET:\n" . $get_param . "\n" . "Backtrace ... \n"; for ($i = 0; $i < count($err_detail); $i++) { $err_str .= "[$i] \n" . "Function: " . $err_detail[$i]["function"] . "\n" . "File: " . $err_detail[$i]["file"] . "\n" . "Line: " . $err_detail[$i]["line"] . "\n\n"; } //---------------------------------------------------- // エラーログ出力 // 出力先はPHPのerror_log設定値 //---------------------------------------------------- //error_log($err_str, 3, ERROR_LOG_DIR . ERROR_LOG_FILE . '.' . date("Ymd", (float)$sec)); if ($level & ERROR_LEVEL) { error_log($err_str, 3, ERROR_LOG_DIR . ERROR_LOG_FILE . '.' . date("Ymd", (float)$sec)); if (DISPLAY_ERROR) { // エラー内容をそのまま画面表示 print nl2br($err_str); } else { // ユーザフレンドリなエラーページへリダイレクト HttpUtils::redirect('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . '?' . KEY . '=' . PAGE_KEY_ERROR_MESSAGE . '&errid=' . $error_id); } exit(0); } } } function error_handler($level, $message, $file, $line, $err_vars) { $handler = new ErrorHandler(); $handler->handleError($level, $message, $file, $line, $err_vars); } ?>