CodeIgniter 可关闭前端错误提示并保留日志记录:将 index.php 中 error_reporting 设为 0 或 E_ERROR|E_WARNING|E_PARSE;在 config.php 中设 log_threshold≥1 且 log_path 可写;保持 ENVIRONMENT 为 'production',避免 show_error 输出。

CodeIgniter 可以关闭前端错误提示,同时保留日志记录,关键在于分离 PHP 错误报告控制和框架日志写入逻辑。默认开发环境下会显示所有错误,但生产环境应隐藏提示、只写日志。
修改 index.php 中的错误报告级别
打开项目根目录下的 index.php,找到类似这行代码:
error_reporting(E_ALL);
将其改为:
- error_reporting(0); —— 完全关闭 PHP 错误提示(推荐用于生产环境)
- 或更稳妥地:error_reporting(E_ERROR | E_WARNING | E_PARSE); —— 仅显示严重错误,仍不显示 Notice/Deprecated 等非致命信息
注意:这个设置不影响 log_message() 或框架自动捕获的错误日志,它们照常写入 logs 目录。
确保日志功能已启用且阈值合理
编辑 application/config/config.php:
- 设置
$config['log_threshold'] = 1;(记录 PHP 错误和框架错误)或= 4;(记录全部) - 确认
$config['log_path']指向可写的目录(如APPPATH . 'logs/'),且该目录权限为 0644 或 0755 - 若使用 CI4,请检查
app/Config/Logger.php中的$threshold和$path
禁用框架自带的错误页面输出
CodeIgniter 默认在出错时调用 show_error() 显示 HTML 页面。要彻底关闭提示,可:
- 避免触发未捕获异常(如控制器中手动 throw Exception)
- 在
application/config/constants.php中,不修改ENVIRONMENT为'development'(保持'production') - CI4 中可通过重写
app/Exceptions/Handler.php的render()方法,对非调试环境返回空响应或自定义静默处理
验证是否生效
人为触发一个错误(例如访问不存在的控制器方法),观察:
- 浏览器是否返回空白页或 404,而不是红色错误堆栈
-
application/logs/目录下是否有新生成的 log 文件,内容包含时间戳、错误类型和消息 - 日志中是否出现类似
ERROR - 2026-10-22 14:28:00 --> Severity: Error --> ...的条目


















