[Svn-src-all:858] [version-2_5-dev 19745] #567(エラーハンドリングの修正及び抽象化)

Seasoft admin @ mail.ec-cube.net
2010年 12月 19日 (日) 10:50:48 JST


Subversion committed to /home/svn/open 19745
http://svn.ec-cube.net/open_trac/changeset/19745
┌────────────────────────────┐
│更新者 :  Seasoft                                      │
│更新日時:  2010-12-19 10:50:48 +0900 (日, 19 12月 2010)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#567(エラーハンドリングの修正及び抽象化)
  * デバックモード時の Fatal Error は、そのまま画面に出力

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/html/handle_error.php

変更: branches/version-2_5-dev/html/handle_error.php
===================================================================
--- branches/version-2_5-dev/html/handle_error.php	2010-12-18 23:24:53 UTC (rev 19744)
+++ branches/version-2_5-dev/html/handle_error.php	2010-12-19 01:50:48 UTC (rev 19745)
@@ -32,7 +32,8 @@
  * PHP4 では, try/catch が使用できず, かつ set_error_handler で Fatal Error は
  * 捕捉できないため, ob_start にこの関数を定義し, Fatal Error が発生した場合
  * に出力される HTML 出力を捕捉する.
- * この関数が実行され, エラーが捕捉されると, エラーページへリダイレクトする.
+ * この関数が実行され, エラーが捕捉されると, DEBUG_MODE が無効な場合,
+ * エラーページへリダイレクトする.
  *
  * @param string $buffer 出力バッファリングの内容
  * @return string|void エラーが捕捉された場合は, エラーページへリダイレクトする;
@@ -40,15 +41,16 @@
  */
 function &_fatal_error_handler(&$buffer) {
     if (preg_match('/<b>(Fatal) error<\/b>: +(.+) in <b>(.+)<\/b> on line <b>(\d+)<\/b><br \/>/i', $buffer, $matches)) {
-
-        $admin = "";
-        if (defined('ADMIN_FUNCTION') && ADMIN_FUNCTION) {
-            $admin = "?admin";
-        }
         error_log("FATAL Error: $matches[3]:$matches[4] $matches[2]\n", 3,
                   realpath(dirname(__FILE__) . "/" . HTML2DATA_DIR . "logs/site.log"));
-        header("Location: " . SITE_URL . "error.php" . $admin);
-        exit;
+        if (DEBUG_MODE !== true) {
+            $url = SITE_URL . "error.php";
+            if (defined('ADMIN_FUNCTION') && ADMIN_FUNCTION) {
+                $url .= "?admin";
+            }
+            header("Location: $url");
+            exit;
+        }
     }
     return $buffer;
 }




Svn-src-all メーリングリストの案内