(Fatal) error<\/b>: +(.+) in (.+)<\/b> on line (\d+)<\/b>
/i', $buffer, $matches)) { $now = date("Y/m/d H:i:s"); error_log($now . " [$matches[3]:$matches[4]] FATAL Error: $matches[2] from ". $_SERVER['REMOTE_ADDR'] . "\n", 3, realpath(dirname(__FILE__) . "/" . HTML2DATA_DIR . "logs/site.log")); if (DEBUG_MODE !== true) { $url = HTTP_URL . "error.php"; if (defined('ADMIN_FUNCTION') && ADMIN_FUNCTION) { $url .= "?admin"; } header("Location: $url"); exit; } } return $buffer; } /** * E_USER_ERROR を捕捉した場合にエラー画面を表示させるエラーハンドラ関数. * * この関数は, set_error_handler() 関数に登録するための関数である. * trigger_error にて E_USER_ERROR が生成されると, エラーログを出力した後, * エラー画面を表示させる. * * E_USER_ERROR 以外のエラーが生成された場合, この関数は true を返す. * * @param integer $errno エラーコード * @param string $errstr エラーメッセージ * @param string $errfile エラーが発生したファイル名 * @param integer $errline エラーが発生した行番号 * @return void|boolean E_USER_ERROR が発生した場合は, エラーページへリダイレクト; * E_USER_ERROR 以外の場合は true */ function handle_error($errno, $errstr, $errfile, $errline) { $now = date("Y/m/d H:i:s"); switch ($errno) { case E_USER_ERROR: error_log($now . " [$errfile] FATAL Error($errno) $errfile:$errline $errstr from ". $_SERVER['REMOTE_ADDR'] . "\n", 3, realpath(dirname(__FILE__) . "/" . HTML2DATA_DIR . "logs/site.log")); displaySystemError($errstr); exit(1); break; case E_USER_WARNING: case E_USER_NOTICE: default: } return true; } /** * エラー画面を表示する * * @param string|null $errstr エラーメッセージ * @return void */ function displaySystemError($errstr = null) { if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { ob_clean(); ob_start(array('SC_MobileEmoji', 'handler')); } else { // 最下層以外の出力用バッファをクリアし、出力のバッファリングを解除する // FIXME #811(出力バッファリングの利用を見直し) while (ob_get_level() >= 2) { ob_end_clean(); } // 最下層の出力バッファをクリアする ob_clean(); } 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->arrDebugMsg[] = "▼▼▼ エラーメッセージ ▼▼▼\n" . $errstr . "▲▲▲ エラーメッセージ ▲▲▲\n" ; } $objPage->process(); } ?>