CodeIgniter 4 默认通过 .env 文件管理数据库配置,需复制 .env.example 并按标准格式填写 hostname、database、username、password 等参数,DBDriver 必须为 "MySQLi",特殊字符密码需用双引号包裹,.env 配置优先级高于 Database.php。

CodeIgniter 4 默认通过 .env 文件管理数据库配置,这是推荐的生产环境做法,比直接改 app/Config/Database.php 更安全、更灵活。
确保 .env 文件在项目根目录且已启用
CI4 启动时会自动加载 .env,但前提是文件存在、未被重命名(如 .env.example),且没有被 .gitignore 或服务器规则屏蔽。首次部署时,需手动复制 .env.example 并重命名为 .env。
数据库配置写法(CI4 标准格式)
在 .env 中取消对应行的注释(去掉前面的 #),填入实际值:
database.default.hostname = "localhost" database.default.database = "yourusername_yourdbname" database.default.username = "yourusername_yourdbuser" database.default.password = "yourdbpassword" database.default.DBDriver = "MySQLi" database.default.DBPort = "3306" database.default.Charset = "utf8mb4" database.default.DBPrefix = "" database.default.SwapPre = "" database.default.DBDebug = false
注意几点:
-
DBDriver必须大写,值为"MySQLi"(不是"mysql"或"mysqli") - 主机名一般用
"localhost",Namecheap 等共享主机通常不支持127.0.0.1 - 数据库名、用户名、密码要严格匹配 cPanel 中创建的完整名称(例如
myuser_mydb,不是只填mydb) - 密码含特殊字符(如
$,@,/)时,务必用双引号包裹,否则解析可能出错
.env 配置优先级高于 Database.php
只要 .env 中定义了 database.* 键,CI4 就不会读取 app/Config/Database.php 里的数组配置。你可以把 Database.php 当作备用或文档参考,实际连接完全由 .env 控制。
验证是否生效的小技巧
在控制器里临时加一行:
dd(env('database.default.database'));如果输出的是你填的数据库名,说明 .env 已正确加载;如果为空,检查文件位置、权限(应为 644)、是否被 PHP 的 getenv() 禁用(极少情况,可通过 phpinfo() 查看 variables_order 是否含 E)。
多环境切换只需改 .env 内容
开发时设为 localhost + 测试库,上线时替换为生产库信息,无需改动任何 PHP 文件,也避免误提交敏感信息。


















