(Fatal error)<\/b>: +(.+) in (.+)<\/b> on line (\d+)<\/b>
/i', $buffer, $matches = array())) { $message = "$matches[1]: $matches[2] on [$matches[3]($matches[4])]"; GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE, true); if (DEBUG_MODE !== true) { $url = HTTP_URL . 'error.php'; if (defined('ADMIN_FUNCTION') && ADMIN_FUNCTION === true) { $url .= '?admin'; } header("Location: $url"); exit; } } return $buffer; } /** * エラー捕捉時のエラーハンドラ関数 (for PHP >= 5.2.0) * * この関数は, register_shutdown_function() 関数に登録するための関数である。 * PHP 5.1 対応処理との互換運用ため E_USER_ERROR は handle_warning で捕捉する。 * * @return void */ static function handle_error() { // 最後のエラーを確実に捉えるため、先頭で呼び出す。 $arrError = error_get_last(); $is_error = false; if (isset($arrError)) { switch ($arrError['type']) { case E_ERROR: case E_PARSE: case E_CORE_ERROR: case E_COMPILE_ERROR: $is_error = true; break; default: break; } } if (!$is_error) { return; } $error_type_name = GC_Utils_Ex::getErrorTypeName($arrError['type']); $errstr = "Fatal error($error_type_name): {$arrError[message]} on [{$arrError[file]}({$arrError[line]})]"; GC_Utils_Ex::gfPrintLog($errstr, ERROR_LOG_REALFILE, true); // エラー画面を表示する SC_Helper_HandleError_Ex::displaySystemError($errstr); } /** * エラー画面を表示する * * @param string|null $errstr エラーメッセージ * @return void */ static function displaySystemError($errstr = null) { ob_clean(); // 絵文字変換・除去フィルターが有効か評価する。 $loaded_ob_emoji = false; $arrObs = ob_get_status(true); foreach ($arrObs as $arrOb) { if ($arrOb['name'] === 'SC_MobileEmoji::handler') { $loaded_ob_emoji = true; break; } } // 絵文字変換・除去フィルターが無効で、利用できる場合、有効にする。 if (!$loaded_ob_emoji && class_exists('SC_MobileEmoji')) { ob_start(array('SC_MobileEmoji', 'handler')); } require_once CLASS_EX_REALDIR . 'page_extends/error/LC_Page_Error_SystemError_Ex.php'; $objPage = new LC_Page_Error_SystemError_Ex(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); if (isset($errstr)) { $objPage->addDebugMsg($errstr); } $objPage->process(); } }