zoukankan      html  css  js  c++  java
  • thinkphp错误输出乱码修正办法

    看了网站上的处理办法,各种没用,只能自己跟代码,处理自定义错误页面,和处理错误信息输出的方法都在核心类库中的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设置也加上,可以确保代码调试的顺畅。

  • 相关阅读:
    前端开发面试题总结之——HTML
    HashMap的那些事
    抽象同步队列AQS(中)—— AQS的重点方法解析
    抽象同步队列AQS(上)—— 宏观上理解AQS
    synchronized原理详解
    volatile原理详解
    JMM模型详解
    计算机运行时内存&处理器CPU初步认知
    mysql-索引详解
    mysql-事务隔离机制&mvcc原理
  • 原文地址:https://www.cnblogs.com/smallgo/p/3175582.html
Copyright © 2011-2022 走看看