讲师中心 微信公众号
AI工具推荐 视频效率加速

Yii框架异常怎么处理_Yii框架错误页面自定义设置【教程】

阿浩君_7575

阿浩君_7575

发布时间:2026-04-21 11:49:12

|

228人浏览过

|

来源于php中文网

原创

Yii异常处理由yii\web\ErrorHandler统一接管,需在config/web.php的components中配置errorAction指向site/error,且生产环境必须关闭YII_DEBUG才能生效。

yii框架异常怎么处理_yii框架错误页面自定义设置【教程】

Yii 的异常处理不是靠“捕获再 try-catch”兜底,而是由 yii\web\ErrorHandler 统一接管 —— 你改配置、换类、调方法,核心都在它身上。不配对 errorAction,或没关掉 YII_DEBUG,自定义页面就永远出不来。

errorAction 配置在哪写才生效

只在 config/web.php 的 components 里写才管用,其他地方全是白搭。

  • 'errorHandler' => ['errorAction' => 'site/error'] 是最低要求,漏掉整个键值对就走默认调试页
  • site/error 中的 site 是控制器 ID,对应 @app/controllers/SiteController.php;error 是动作名,必须是 actionError()
  • 如果用了模块(比如 admin),要写成 'route' => 'admin/site/error',否则路由找不到
  • 开发期 YII_DEBUG = true 时,哪怕配了 errorAction 也会强制显示调试页 —— 这不是 bug,是设计行为

renderException() 为什么不执行或返回空白

重写 renderException() 后页面空白,90% 是因为没走完 Yii 的渲染链路。

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载
  • 必须显式调用 parent::renderException($exception),否则不会触发 errorAction 对应的视图渲染
  • 不能在方法里 echo、print_r 或 exit,得返回字符串(例如 return $this->render('error-500', [...]))
  • ParseError、Fatal Error 不进 renderException(),它们走 handleFatalError(),这个也得重写
  • 响应已被输出(比如前面有 var_dump、ob_flush 或调试工具条提前写入)时,再返回内容也会被吞掉

404 和 500 怎么分开展示

别指望 HTTP 状态码判断,得看异常类型 —— Yii 的 NotFoundHttpException 和普通 Exception 是两类东西。

  • 在 SiteController::actionError() 里检查:if ($exception instanceof \yii\web\NotFoundHttpException),然后 return $this->render('error-404')
  • 或者在自定义 CustomErrorHandler::renderException() 里提前分发,比在视图里 if 更干净
  • 别用 Yii::$app->response->getStatusCode() 判断,这个值在错误流程中不可靠,且 404/500 都可能返回 500(比如未捕获异常抛在 404 之后)
  • error-404.php 和 error-500.php 都得放在 @app/views/site/ 下,文件名必须匹配 render() 调用里的参数

API 场景下怎么统一返回 JSON 错误格式

HTML 错误页对 API 完全无用,errorAction 返回的必须是纯数组,让 Yii 自动序列化。

  • 在 SiteController::actionError() 里直接 return ['code' => 500, 'message' => $exception->getMessage()],不要 render()
  • 状态码映射要手动做:$statusCode = $exception->statusCode ?: 500,再设 Yii::$app->response->statusCode = $statusCode
  • 对 HttpException 子类(如 BadRequestHttpException)可建 $codeMap = [400 => 10001] 表,避免一堆 if
  • 千万别在 actionError() 里再 throw 新异常,会递归进入错误处理器,最终 500 崩溃

最常被忽略的是环境开关:生产环境必须关 YII_DEBUG,否则所有自定义都无效;而 errorAction 没配对、actionError() 方法不存在、视图路径拼错这三处,占了线上异常页面不显示的 80% 原因。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

969

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2820

2023.10.25

PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2990

2025.09.04

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

0

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

0

2026.10.15

VS Code 怎么配置开发环境
VS Code 怎么配置开发环境

VS Code开发环境专题汇集编辑器安装、语言扩展、编译器、解释器、终端和调试配置文章,覆盖Java、Python、C++和PHP等常见语言的入门设置。

0

2026.10.15

C++ 开发环境怎么搭建
C++ 开发环境怎么搭建

C++开发环境专题汇集Windows、Linux下的编译器与IDE安装配置教程,涵盖GCC、Clang、Visual Studio、CLion和VS Code,以及编译运行首个程序的步骤。

0

2026.10.15

Python 虚拟环境是什么
Python 虚拟环境是什么

Python虚拟环境专题介绍项目依赖隔离的作用,汇集venv与uv创建、激活、退出及解释器切换的相关文章,并覆盖Windows、Linux和VS Code中的常见配置问题。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn