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

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

酷瑶吖_4234

酷瑶吖_4234

发布时间:2026-03-21 08:17:00

|

729人浏览过

|

来源于php中文网

原创

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,或者视图路径拼错一个字母,然后花半小时查路由 —— 错误页本身不报错,它只会静默失败。

热门AI工具

更多
WorkBuddy

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

豆包大模型

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

PixTV
PixTV Hot

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

切问学术

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

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

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

相关专题

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

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

313

2023.09.26

define的用法
define的用法

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

619

2023.10.11

scripterror怎么解决
scripterror怎么解决

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

989

2023.10.18

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

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

3000

2023.10.25

http500解决方法
http500解决方法

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

3563

2023.11.09

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

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

894

2023.11.14

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

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

6546

2024.03.12

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

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

5450

2024.08.16

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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