页面报错需先区分“连不上”或“连上但操作失败”,再按白屏/404/数据库错误类型逐层排查;重点检查database.php语法、编码、连接参数及mysql权限配置。

页面报错通常不是配置改错了,而是改完没验证、没重启或没对齐环境。重点先分清是“连不上”还是“连上了但操作失败”,再逐层排查。
确认错误类型:白屏、404 还是数据库报错?
CodeIgniter 的数据库错误有明显特征:
- 出现 A Database Error Occurred 或 Unable to connect to your database server → 属于连接阶段失败;
- 页面空白或 500 错误,但无明确提示 → 可能是 PHP 解析失败(如 syntax error)、扩展未启用,或配置文件末尾多加了字符(如逗号、括号不闭合);
- 能打开首页但新增/更新失败,提示字段为空或 SQL 报错 → 多为字符集、SQL 模式或表结构不匹配,不是连接问题。
检查 database.php 文件本身是否合法
常见低级错误会直接导致整个框架加载中断:
- 末尾漏掉分号
;或多写了一个逗号(尤其在数组最后一项后); - 中文全角符号混入(如用中文引号、顿号、空格);
- 使用了 PHP 8+ 不支持的语法(如老版本 CI3 配置中用了短数组语法
[]但 PHP 版本太低); - 文件编码不是 UTF-8 无 BOM —— 用编辑器另存为「UTF-8(无BOM)」格式。
验证数据库连接参数是否生效
不要只看账号密码对不对,这些细节常被忽略:
-
hostname 写成
localhost在 Linux/Docker 环境下易失败,优先改用127.0.0.1; -
username/password 为空时必须显式写成
'',不能留空或注释掉; - database 名称要与 MySQL 中实际库名完全一致(区分大小写,Linux 下尤其注意);
- MySQL 8.0+ 用户需确认认证方式:执行
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';兼容旧版 PHP。
开启调试并定位真实错误源
临时启用详细报错,比猜更快:
- 在
application/config/database.php中设$db['default']['db_debug'] = TRUE;; - 在控制器插入前加
var_dump($this->db->conn_id);,返回false表示根本没连上; - 若报
Access denied,说明权限不足 → 登录 MySQL 执行GRANT INSERT,UPDATE ON dbname.* TO 'user'@'%'; FLUSH PRIVILEGES;; - 若报
Unknown database,检查库是否存在,且用户对该库有访问权限(不只是服务器登录权限)。











