看了网站上的处理办法,各种没用,只能自己跟代码,处理自定义错误页面,和处理错误信息输出的方法都在核心类库中的function.php中。
处理异常最后都用halt函数输出模板页。所以只需要将halt代码中加上header设置,就可以轻松解决这个问题。
/** * 错误输出 * @param mixed $error 错误 * @return void */ function halt($error) { header('Content-Type: text/html; charset=utf-8'); $e = array(); if(APP_DEBUG) { //调试模式下输出错误信息 if(!is_array($error)) { $trace = debug_backtrace(); $e['message'] = $error; $e['file'] = $trace[0]['file']; $e['line'] = $trace[0]['line']; ob_start(); debug_print_backtrace(); $e['trace'] = ob_get_clean(); } else { $e = $error; } } else { //否则定向到错误页面 $error_page = C('ERROR_PAGE'); if(!empty($error_page)) { redirect($error_page); } else { if(C('SHOW_ERROR_MSG')) { $e['message'] = is_array($error) ? $error['message'] : $error; } else { $e['message'] = C('ERROR_MESSAGE'); } } } // 包含异常页面模板 include C('TMPL_EXCEPTION_FILE'); exit; }
另外我记得dump函数里面也是没有header设置的,所以在很多时候,dump也会打出乱码,所以顺手把dump的header设置也加上,可以确保代码调试的顺畅。