ThinkPHP 5.0 支持通过 extra_config_list 机制将数据库配置分离至独立的 database.php 文件。需在 application/config.php 中添加 'extra_config_list' => ['database'],并在同级目录创建返回数据库配置数组的 database.php;该文件可被 .gitignore 排除以提升安全性,且支持多环境适配与职责分离。

ThinkPHP 5.0 支持将数据库配置从主配置文件中分离出来,实现配置解耦和安全管控。核心方式是通过 extra_config_list 机制启用独立配置文件,而不是直接硬编码在 config.php 中。
配置分离的三步操作
-
在应用目录(如
application/)下的config.php文件中,添加以下配置项:'extra_config_list' => ['database'],
这行代码告诉框架:额外加载
database.php作为独立配置文件。 -
在同一级目录(即
application/下)新建database.php文件,内容为标准数据库配置数组:return [ 'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'thinkphp', 'username' => 'root', 'password' => '', 'hostport' => '3306', 'charset' => 'utf8', 'prefix' => 'tp_', 'debug' => true, ]; -
使用时注意读取方式:
- 原来
Config::get('database.hostname')可继续使用(二维键名访问); - 若
config.php和database.php同时定义了database键,database.php的值会覆盖config.php中的同名配置。
- 原来
为什么推荐分离配置
-
安全性提升:可将
database.php加入.gitignore,避免数据库账号密码误提交到代码仓库; -
环境适配方便:不同环境(开发/测试/生产)可维护各自的
database.php,无需修改主配置; -
职责清晰:
config.php专注通用设置(如路由、模板),数据库参数交由专用文件管理。
注意事项
-
database.php必须返回一个合法的 PHP 数组,不能有输出或语法错误; - 框架加载顺序是先
config.php,再按extra_config_list顺序合并后续文件; - 分离后,
Config::get('database')获取的是整个数据库配置数组,不是字符串; - 不建议在
database.php中写业务逻辑或动态计算,保持其纯配置属性。
这样配置后,数据库参数就完全独立出来了,结构更清晰,也便于团队协作与部署管理。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











