惯例配置是框架预设的通用默认值,存于thinkphp/convention.php,不建议修改;应用配置是项目级自定义配置,存于application/config.php等,可覆盖惯例配置且关键参数仅在此生效。

惯例配置和应用配置最根本的区别在于:谁定的、能不能改、改了管不管用。
惯例配置是框架默认写的“参考答案”
它存放在 thinkphp/convention.php,由 ThinkPHP 官方预设,覆盖绝大多数基础行为,比如默认模块名、控制器层命名规则、Cookie 路径、时区、AJAX 返回格式等。这个文件不建议手动修改——不是因为技术上不能改,而是改了会影响所有项目,且后续升级容易被覆盖或引发兼容问题。它的作用是提供一套稳定、通用的底层约定,属于“最低优先级”的配置来源,会被后面加载的任何同名配置覆盖。
应用配置是你自己写的“正式答卷”
它位于 application/config.php(TP5.0)或 config/app.php(TP5.1),是每个项目启动时第一个读取的自定义配置文件。你在这里写的配置会生效,并能覆盖惯例配置中相同名称的项。更重要的是,部分关键参数只能在这里设置才有效,比如 app_debug、default_filter、url_route_must 等——在模块配置里写、用 Config::set() 动态设,都无效。
加载顺序决定谁说了算
ThinkPHP 按固定顺序加载配置,后加载的同名项会覆盖前面的:
- 惯例配置(最先加载,优先级最低)
- 应用配置(紧随其后,全局生效,关键项唯一合法位置)
- 模块配置、扩展配置、动态配置(依次更高,但作用范围递减)
举个例子:惯例配置里 'default_module' => 'Home',你在 config.php 里写 'default_module' => 'index',最终生效的就是 index;但如果把这行挪到某个模块的 config.php 里,它只对该模块起作用,其他模块仍用应用配置里的值。
扩展配置是应用配置的“加分项”
TP5.0 支持在 application/extra/ 目录下放独立配置文件(如 database.php、user.php),它们会被自动合并进应用配置,相当于把大配置文件拆开管理。这类扩展配置的优先级略高于主 config.php,但依然低于模块配置,也不能用来设置 app_debug 这类硬性限制项。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











