codeigniter4数据库配置优先使用.env文件,database.php仅作备用或动态逻辑补充;.env默认启用、支持环境隔离且避免敏感信息泄露,database.php用于运行时判断或特殊驱动配置。

CodeIgniter4数据库配置优先写在 .env 文件里,Database.php 是备用或补充位置,不是主配置源。
.env 是默认且推荐的配置入口
CI4 默认启用 .env 文件(位于项目根目录),框架启动时会自动读取并合并到 Config 类中,优先级高于 PHP 配置类。这意味着你改了 .env 里的数据库参数,不用动任何 PHP 文件就能生效。
- 格式简洁明了,例如:
database.default.hostname = "localhost"
database.default.database = "myapp_dev"
database.default.username = "root"
database.default.password = "123456"
database.default.DBDriver = "MySQLi" - 天然支持环境隔离:开发、测试、生产环境只需切换不同 .env 文件内容,无需修改代码
- 避免敏感信息硬编码进版本库——.env 文件通常被 .gitignore 排除
Database.php 用于结构化逻辑或动态处理
app/Config/Database.php 是一个 PHP 类,继承自 BaseConfig,它的作用不是替代 .env,而是封装连接行为、做运行时判断或覆盖默认值。
- 如果你需要根据 PHP 环境变量、服务器标识或条件逻辑来切换数据库组,可以在这里写判断逻辑
- 某些特殊驱动配置(如 PDO 的 attributes)、连接池参数、或自定义调试开关,更适合放在这里
- 它会读取 .env 中的值(通过
$this->loadEnvironment();或直接调用env()函数),再进行加工,不是独立配置源
常见误区:别只改 Database.php 忘了 .env
很多开发者遇到“连不上数据库”,是因为只改了 app/Config/Database.php 里的属性,却没意识到 CI4 的初始化流程先走 .env —— 如果 .env 里仍保留默认的 localhost/root/空密码,就会覆盖你在 Database.php 中写的值。
- 检查顺序:框架先加载 .env → 再实例化 Database 类 → 最终生成连接配置
- 验证方法:在控制器中打印
config('Database')->default,看实际加载的是什么值 - 部署时务必确认服务器上的 .env 文件存在且权限正确(不能被 Web 直接访问)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











