codeigniter 显示详细报错信息需同时配置开发环境、开启php错误报告、启用框架调试机制。ci4设environment='development'并开启app.debug=true;ci3同理修改index.php,并确保error_reporting(e_all)和display_errors=1生效,再验证异常是否真实触发且未被拦截。

CodeIgniter 显示详细报错信息的关键在于**环境配置 + 错误报告开关 + 框架调试机制协同生效**。默认生产环境会隐藏错误细节,开发时必须主动开启。
设置开发环境模式
这是最基础也最关键的一步。CI4 和 CI3 的做法略有不同,但核心都是修改入口文件中的环境常量:
-
CI4:打开
public/index.php,确保顶部有:define('ENVIRONMENT', 'development'); -
CI3:打开
index.php(根目录),找到类似这行并设为development:define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
该设置会启用框架内置的详细错误页面,包括堆栈追踪、文件位置、行号和变量快照。
检查 PHP 错误报告级别
即使框架设为 development,若 PHP 自身关闭了错误显示,依然看不到报错。需确认以下两点:
- 在
index.php(CI3)或public/index.php(CI4)顶部,紧靠环境定义之后,加上:error_reporting(E_ALL); ini_set('display_errors', '1'); - 检查服务器 php.ini 中是否禁用了
display_errors(线上服务器通常禁用,本地开发建议开启)
注意:这个设置只影响“显示”,不影响日志记录——错误仍会写入 writable/logs/(CI4)或 application/logs/(CI3)。
启用调试工具栏(CI4 推荐)
CI4 内置了强大的调试工具栏(Debug Toolbar),能查看数据库查询、请求数据、会话、性能耗时等,比纯错误页面更直观:
- 确保
.env文件中启用了调试:app.debug = true - 确认
app.toolbarCollectors未被清空(默认已启用常用收集器) - 页面右下角会出现浮动工具栏,点击即可展开详情
它不依赖 PHP 错误显示,即使页面渲染成功也能看到后台执行情况,对排查逻辑错误特别有用。
验证错误是否真被触发
有时你以为写了错代码,但实际没执行到——比如路由没匹配、控制器方法未调用、或被 try-catch 吞掉异常:
- 在控制器方法开头加一行
throw new Exception('test');,看是否弹出完整错误页 - 检查 Apache/Nginx 日志或 PHP-FPM 错误日志,确认是否有底层 fatal error(如类未找到、语法错误)被 Web 服务器捕获而未透传给 CI
- CI4 中,如果使用了自定义异常处理器或中间件,可能拦截了异常,需检查
app/Config/Exceptions.php配置
只有真实抛出且未被捕获的错误,才会进入 CI 的错误处理流程。











