您现在的位置是:首页 > PHP框架交流PHP框架交流

thinkphp异常处理 修改thinkphp默认报错样式

上善若水2022-12-08 17:39:13【PHP框架交流】 1031人已围观

简介用的现成的框架,报错太不友好了,就一个提示massage,通过调试找到报错位置还原官方报错页面,如果你也是shipXO直接过来产考方法修改.env开启debug [APP] THINK_ENV=

用的现成的框架,报错太不友好了,就一个提示massage,通过调试找到报错位置还原官方报错页面,如果你也是shipXO直接过来产考
方法修改.env 开启debug

[APP]
THINK_ENV = dev
DEBUG =  true

过程
1.异常会进入app/ExceptionHandle.php进行处理
2.查看渲染模板的位置

    protected function renderExceptionContent(Throwable $exception): string
    {
        ob_start();
        $data = $this->convertExceptionToArray($exception);
        extract($data);
        include $this->app->config->get('app.exception_tmpl') ?: __DIR__ . '/../../tpl/think_exception.tpl';

        return ob_get_clean();
    }

3.去config/app.php定位到渲染页面

return [
    // 应用地址
    'app_host'         => '',
    // 应用的命名空间
    'app_namespace'    => '',
    // 是否启用路由
    'with_route'       => true,
    // 默认应用
    'default_app'      => 'index',
    // 默认时区
    'default_timezone' => MyFileConfig('common_timezone', '', 'Asia/Shanghai', true),

    // 应用映射(自动多应用模式有效)
    'app_map'          => [],
    // 域名绑定(自动多应用模式有效)
    'domain_bind'      => [],
    // 禁止URL访问的应用列表(自动多应用模式有效)
    'deny_app_list'    => [],

    // 异常页面的模板文件
    'exception_tmpl'   => APP_PATH . 'tpl/think_exception.tpl',

    // 错误显示信息,非调试模式有效
    'error_message'    => '系统出现错误、请联系管理员',
    // 显示错误信息
    'show_error_msg'   => true,
];


找到位置,用官方模板覆盖
4.修改后发现依旧不显示,显示十年磨一剑-为API开发设计的高性能框架
看到下方\think\facade\App::isDebug()才显示详情。
5.找到这个参数怎么设置的。

    /**
     * 调试模式设置
     * @access protected
     * @return void
     */
    protected function debugModeInit(): void
    {
        // 应用调试模式
        if (!$this->appDebug) {
            $this->appDebug = $this->env->get('app_debug') ? true : false;
            ini_set('display_errors', 'Off');
        }

        if (!$this->runningInConsole()) {
            //重新申请一块比较大的buffer
            if (ob_get_level() > 0) {
                $output = ob_get_clean();
            }
            ob_start();
            if (!empty($output)) {
                echo $output;
            }
        }
    }

6.定位到这个参数是env配置的,修改配置。DEBUG = true

7.这样报错就友好的,实际只需操作第六部就行,逗了一个大圈,解决就行。

很赞哦! (0)

相关文章

随机图文

文章评论

站点信息

  • 建站时间:2019-10-24
  • 网站程序:Thinkphp6 Layui
  • 文章统计247篇文章
  • 标签管理标签云
  • 统计数据cnzz统计
  • 微信公众号:扫描二维码,关注我们