用 php -l 命令可快速校验 database.php 语法,检查数组结构完整性、隐藏字符及加载行为,确保 $db['default'] 配置正确且文件被正常加载。

直接打开 application/config/database.php,用 PHP 语法校验工具或命令行快速验证,比肉眼逐行检查更可靠。
用 php -l 命令即时检测
在终端中执行以下命令:
php -l application/config/database.php- 若返回
Parse error: ...,说明存在语法错误,错误行号会明确标出(如Errors parsing application/config/database.php on line 42) - 常见触发点:数组末尾多写逗号(PHP 7.3+ 允许,但低版本 CI3 环境可能报错)、单引号/双引号不闭合、
$db['default']赋值语句缺等号或分号、注释符号//后误接中文字符导致编码异常
检查配置数组结构是否完整
CI3 要求 $db['default'] 必须是完整关联数组,漏掉任一必填键会导致运行时报错或静默失败:
- 确认存在
'hostname'、'username'、'password'、'database'、'dbdriver'五个基础键 - 注意
'password'为空时必须写成'',不能留空或只写注释 - 检查是否误将
$db['default'] = array(...)写成$db = array(...)(丢失了索引default)
排除隐藏字符和编码问题
复制粘贴配置内容易引入不可见字符(如 UTF-8 BOM、全角空格、零宽空格),尤其从网页或文档复制时:
- 用编辑器切换到“显示所有字符”模式(如 VS Code 的
Ctrl+Shift+P → Toggle Render Whitespace)查看异常符号 - 保存文件时选择纯 UTF-8 编码(不含 BOM)
- 临时删掉整个
database.php,新建空白文件,手动重写最简配置再逐步补全,可快速排除污染
启用调试并观察加载行为
即使语法无误,配置未被正确加载也会表现为“连不上”:
- 在
database.php文件末尾加一行:echo 'database.php loaded'; exit;,访问页面看是否输出——不输出说明文件根本没被加载(检查路径、命名、自动加载逻辑) - 去掉上面的调试语句后,在控制器里加:
var_dump($this->db);,若报Fatal error: Call to a member function ... on null,说明数据库类未初始化,需确认是否执行了$this->load->database()或开启了自动加载











