Yii框架的错误页面怎么自定义_配置errorAction和视图【汇总】

酷瑶吖_4234

酷瑶吖_4234

2026-03-21

729人浏览

原创

yii2 的 erroraction 配置只在应用组件的 errorhandler 中生效,必须设于 config/web.php 的 'components' => ['errorhandler' => ['erroraction' => 'site/error']],且视图路径为 @app/views/site/error.php,开发环境(yii_debug=true)会强制显示调试页而忽略该配置。

yii框架的错误页面怎么自定义_配置erroraction和视图【汇总】

Yii2 中 errorAction 配置不生效?先确认它在哪设

Yii2 的错误页面路由由 errorAction 控制,但它**只在应用组件配置里生效**,不是在控制器或行为里随便设就能覆盖的。常见错误是把它写在 Controller::actions() 里,或者在 behaviors() 中试图拦截 —— 这些地方完全不参与错误分发流程。

正确位置是 config/web.php(或对应入口配置)的 'components' => ['errorHandler' => [...]] 下:

'errorHandler' => [
    'errorAction' => 'site/error',
],
  • errorAction 值必须是合法的路由格式:'controller/action',不能带模块前缀(除非你显式配置了 route 属性)
  • 该 action 对应的控制器方法必须存在,且返回视图(不能只是 throw new Exception)
  • 如果用了模块(如 admin),而错误页想放在模块内,得配 'route' => 'admin/site/error',否则默认走应用级路由

自定义错误视图文件找不到?路径和命名有硬规则

Yii2 默认查找视图的路径是 @app/views/site/error.php(对应 site/error),但这个“site”不是随便写的 —— 它由 errorAction 的 controller 部分决定,且视图文件名必须叫 error.php,不能是 error-404.php 或其他名字(除非你手动改逻辑)。

Yii Framework 2.0.51
Yii Framework 2.0.51

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

下载
  • 视图路径固定为 @app/views/{controller}/error.php,其中 {controller} 是 errorAction 中斜杠前的部分
  • 如果 controller 是 errors,那就要建 @app/views/errors/error.php
  • 视图里能直接访问 $exception 和 $statusCode 变量,别指望 $model 或其他控制器传参自动过来
  • 调试时可临时在视图里加 <?php var_dump($exception->getMessage()); ?> 确认是否真进来了

404 页面单独处理?别只靠 errorAction

errorAction 统一接管所有 HTTP 错误(包括 404),但它没法区分状态码。如果你要让 404 显示不同样式或逻辑,就得在 site/error 动作里手动判断:

public function actionError()
{
    $exception = Yii::$app->errorHandler->exception;
    if ($exception instanceof NotFoundHttpException) {
        return $this->render('error-404');
    }
    return $this->render('error');
}
  • 别依赖 $this->getView()->context 或 Yii::$app->getResponse()->getStatusCode() —— 在 error action 里它们可能还没被正确设置
  • 真正可靠的是 Yii::$app->errorHandler->exception,它包含原始异常对象,instanceof 判断最稳
  • 注意:404 异常可能来自路由未匹配,也可能来自 throw new NotFoundHttpException(),两种情况都会走到这里

开发环境和生产环境显示不同?YII_DEBUG 会绕过你的视图

当 YII_DEBUG 为 true(即开发环境),Yii2 会强制显示自带的调试页面,完全忽略你配的 errorAction 和视图。这不是 bug,是设计如此 —— 调试信息优先级高于自定义错误页。

  • 测试自定义错误页,必须把 YII_DEBUG 设为 false,并确保 YII_ENV 是 'prod' 或其他非 'dev'
  • 本地调试时想看自定义页效果,可以临时在 web/index.php 里加 defined('YII_DEBUG') or define('YII_DEBUG', false);
  • 上线后如果还看到白屏或默认错误页,先检查 errorHandler 是否被其他扩展(比如某些日志组件)覆盖了配置

最常漏掉的是:以为改了 errorAction 就万事大吉,结果忘了关 YII_DEBUG,或者视图路径拼错一个字母,然后花半小时查路由 —— 错误页本身不报错,它只会静默失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

yii yii框架

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.26

313

5

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

2023.10.11

619

5

scripterror怎么解决
scripterror怎么解决

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

2023.10.18

989

5

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

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

2023.10.25

2980

5

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3543

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

894

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6546

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5450

6

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

2026.05.08

501

31

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共22课时 | 9.3万人学习