ThinkPHP5.0配置加载顺序由低到高为:惯例配置→应用配置→应用扩展配置→场景配置→模块配置→模块扩展配置→动态配置;后加载者覆盖同名项,最终合并为全局小写键数组。

ThinkPHP5.0 的配置文件加载顺序严格遵循优先级规则,后加载的会覆盖同名配置项。整个过程不是简单叠加,而是按固定层级逐层合并,最终形成运行时生效的完整配置。
标准加载顺序(由低到高)
框架按以下顺序依次加载并合并配置,越靠后的层级优先级越高:
- 惯例配置(thinkphp/convention.php)——框架默认配置,最基础、最低优先级
- 应用配置(application/config.php)——项目级通用配置
- 应用扩展配置(application/extra/*.php)——如
database.php、cache.php等独立功能配置 - 场景配置(application/{app_status}.php)——例如开发环境启用
dev.php,测试环境启用test.php - 模块配置(application/{module}/config.php)——如
application/index/config.php,仅对该模块生效 - 模块扩展配置(application/{module}/extra/*.php)——模块级独立扩展项
- 动态配置(代码中调用
Config::set()或config())——运行时写入,最高优先级,可覆盖一切静态配置
关键说明
所有配置最终都合并进一个全局数组,键名统一转为小写,不区分大小写;相同键名时,后加载者覆盖先加载者。比如:
- 惯例配置设
'default_module' => 'home' - 应用配置改成了
'default_module' => 'index' - 开发环境(
app_status = 'dev')下dev.php又设为'default_module' => 'admin' - 则最终生效的是
'admin'
自定义配置目录的影响
若在入口文件定义了 CONF_PATH 常量(如 define('CONF_PATH', __DIR__.'/../config/');),则:
立即学习“PHP免费学习笔记(深入)”;
- 应用配置路径变为
CONF_PATH . 'config.php' - 应用扩展目录变为
CONF_PATH . 'extra/' - 但模块配置仍从
application/{module}/下读取,不受CONF_PATH影响 - 因此模块配置仍高于自定义的应用配置,优先级关系不变
验证当前生效配置
可在控制器或调试页面中直接输出:
dump(config()); —— 查看全部已合并配置dump(config('database.hostname')); —— 查看某二级配置项



















