Ejemplo n.º 1
0
 /**
  * @param $e Exception
  */
 public function traceError($e)
 {
     global $_F;
     $error_code = 0;
     if (!is_array($e)) {
         $error_code = $e->getCode();
     }
     if (is_array($e)) {
         $error_message = $e['message'];
         $error_file = $e['file'];
         $error_line = $e['line'];
     } else {
         $error_message = $e->getMessage();
         $error_file = $e->getFile();
         $error_line = $e->getLine();
         $exception_trace = nl2br($e->__toString());
     }
     $fLogger = new FLogger('error');
     $exception_message = $error_message . '<br /> 异常出现在:' . $error_file . ' 第 ' . $error_line . ' 行';
     $fLogger->append($exception_message);
     if (!$_F['debug']) {
         if ($error_code == 404) {
             FResponse::sendStatusHeader(404);
             $this->view->displaySysPage('404.tpl');
             //                echo "<strong>404 NOT FOUND</strong>";
         } else {
             FResponse::sendStatusHeader(500);
             $this->view->displaySysPage('500.tpl');
         }
         exit;
     }
     if ($_F['in_ajax']) {
         if ($_F['debug']) {
             FResponse::output(array('result' => 'exception', 'content' => $exception_message));
             exit;
         } else {
             if ($error_code == 404) {
                 FResponse::sendStatusHeader(404);
             } else {
                 FResponse::sendStatusHeader(500);
             }
             exit;
         }
     }
     header('HTTP/1.1 500 FLib Error');
     header('status: 500 FLib Error');
     $exception_message = str_replace(APP_ROOT, '', $exception_message);
     $exception_trace = str_replace(APP_ROOT, '', $exception_trace);
     $this->view->set('exception_message', str_replace(APP_ROOT, '', $exception_message));
     $this->view->set('exception_trace', preg_replace('#[\\w\\d \\#]+?/f.php.+?$#si', ' Flib 引导入口', $exception_trace));
     $this->view->displaySysPage('exception.tpl');
 }
Ejemplo n.º 2
0
 /**
  * @param $e Exception | array
  */
 public function traceError($e)
 {
     global $_F;
     $error_code = 0;
     $exception_trace = '';
     if (!is_array($e)) {
         $error_code = $e->getCode();
     }
     if (is_array($e)) {
         $error_message = $e['message'];
         $error_file = $e['file'];
         $error_line = $e['line'];
     } else {
         $error_message = $e->getMessage();
         $error_file = $e->getFile();
         $error_line = $e->getLine();
         $exception_trace = nl2br($e->__toString());
     }
     $exception_message = $error_message . '<br /> 异常出现在:' . $error_file . ' 第 ' . $error_line . ' 行';
     $log_text = "\n--------------------------------------------------------\n";
     if (isset($_F['current_sql'])) {
         $log_text .= "SQL: " . $_F['current_sql'] . "\n";
         $log_text .= "--------------------------------------------------------\n";
     }
     if (is_object($e)) {
         $log_text .= $e->__toString() . "\n";
         $log_text .= "--------------------------------------------------------\n";
     } else {
         $log_text .= $error_message . "\n";
         $log_text .= "--------------------------------------------------------\n";
     }
     if ($_F['run_in'] == 'shell') {
         $log_text_header = "\n\n          ==========================================\n                         ERROR FOUND\n          ========================================== \n";
         die($log_text_header . $log_text);
     }
     FLogger::write($log_text, 'error');
     if (!$_F['debug']) {
         if ($error_code == 404) {
             FResponse::sendStatusHeader(404);
             $this->view->displaySysPage('404.tpl');
         } else {
             FResponse::sendStatusHeader(500);
             $this->view->displaySysPage('500.tpl');
         }
         exit;
     }
     $exception_message = str_replace(F_APP_ROOT, '', $exception_message);
     if ($_F['in_ajax']) {
         if ($_F['debug']) {
             $ajaxError = preg_replace('/<br.+?>/i', "\n", $exception_message);
             FResponse::output(array('result' => 'error', 'msg' => $ajaxError));
             exit;
         } else {
             if ($error_code == 404) {
                 FResponse::sendStatusHeader(404);
             } else {
                 FResponse::sendStatusHeader(500);
             }
             exit;
         }
     }
     $exception_trace = str_replace(F_APP_ROOT, '', $exception_trace);
     $this->view->assign('exception_message', $exception_message);
     $this->view->assign('exception_trace', preg_replace('#[\\w\\d \\#]+?/f.php.+?$#si', ' Flib 引导入口', $exception_trace));
     $this->view->displaySysPage('exception.tpl');
 }