db_debug控制数据库错误信息是否显示在页面上,开发环境应设为TRUE便于调试,生产环境必须设为FALSE防止敏感信息泄露,且错误仍会记录日志并可通过$db->error()获取。

CodeIgniter 的 db_debug 是控制数据库错误是否直接显示在页面上的关键开关,它不决定“是否报错”,而是决定“错误信息是否暴露给前端”。正确配置对开发调试和线上安全都至关重要。
开发环境:开启 db_debug 便于排查
在 application/config/database.php 中,找到 $db['default'] 数组,确保:
-
'db_debug' => TRUE—— 错误会以详细堆栈、SQL 语句、连接参数等形式显示 - 配合
ENVIRONMENT = 'development'(在index.php中设置),可获得完整调试上下文 - 适合本地或测试环境,能快速定位连接失败、表不存在、字段名错误等问题
生产环境:必须关闭 db_debug 防泄漏
上线前务必禁用,否则数据库账号、密码、主机、结构等敏感信息可能被直接输出:
- 将
'db_debug' => TRUE改为'db_debug' => FALSE - 同时建议把
ENVIRONMENT设为'production',这样框架也会自动关闭其他调试输出 - 错误仍会记录在日志中(
application/logs/),但不会展示给用户
更稳妥的写法:按环境动态启用
避免手动来回修改,推荐用环境常量判断:
- 在
database.php中写成:'db_debug' => (ENVIRONMENT !== 'production') - 只要
index.php里定义了define('ENVIRONMENT', 'production');,上线时就自动关闭 - 本地开发改回
'development'即可恢复调试能力,无需动配置文件
注意:db_debug 关闭 ≠ 错误消失
即使关掉 db_debug,数据库操作失败依然会发生,只是不显示详情。你需要:
- 检查
application/logs/下的错误日志文件 - 在代码中主动判断结果,比如:
if ($this->db->affected_rows() === FALSE) { log_message('error', 'DB insert failed'); } - 结合
$this->db->error()获取错误码和消息(即使db_debug关闭也能用)


















