ThinkPHP配置文件必须为.php后缀且返回数组,唯一自动加载的是application/config.php;模块配置需命名为config.php并置于对应模块目录;状态脚本名须与APP_STATUS值严格一致;扩展配置需显式调用Config::load()加载。

ThinkPHP 配置文件命名没有强制的「唯一标准名」,但必须满足框架自动加载机制的路径与命名约定,否则配置不会生效。
application/ 目录下的全局配置文件名是固定的
框架启动时会自动加载 application/config.php,这是唯一被无条件加载的主配置文件。它必须存在、必须叫这个名、必须返回数组。其他如 database.php、cache.php 等属于「模块化配置文件」,需手动引入或通过 Config::load() 加载,框架不自动识别它们的文件名。
- 不能写成
config.yaml或config.ini—— ThinkPHP 只认.php后缀且返回数组的 PHP 文件 -
application/config.php是入口级配置,所有环境(debug / production)都走它;若需区分,应配合APP_ENV判断,而不是靠文件名切换 - 不要试图用
config_dev.php这类名字替代config.php,框架不会自动加载它
模块级配置文件必须叫 config.php
每个模块(如 application/index/)下可放自己的 config.php,框架在初始化该模块时会自动合并加载。模块配置优先级高于全局 application/config.php。
- 路径必须是
application/模块名/config.php,例如application/api/config.php - 不能叫
api_config.php或settings.php—— 框架只认固定名config.php - 模块配置里可以覆盖全局配置项,比如全局设了
'default_return_type' => 'json',模块里再写一遍就能覆盖
状态配置文件(如 debug.php)依赖 APP_STATUS 常量
当定义了 APP_STATUS(如 define('APP_STATUS', 'debug');),框架会尝试加载同名的 application/debug.php。这文件不是「配置文件」,而是「状态脚本」,执行时机早于配置加载,常用于动态改写配置。
立即学习“PHP免费学习笔记(深入)”;
- 文件名必须和
APP_STATUS值完全一致,大小写敏感:设'Debug'就去找Debug.php,不是debug.php - 它不返回数组,而是直接执行语句,比如
Config::set('app_debug', true); - 别把它当成配置文件来写键值对,否则会报错或静默失败
自定义配置文件要显式 load,名字随意但路径要对
如果把数据库配置单独拆到 application/extra/database.php,那它属于「扩展配置」,需主动调用 Config::load() 才生效,文件名本身无限制。
- 推荐放在
application/extra/下,这是框架约定的扩展配置目录 - 文件名可以是
wechat.php、oss.php,只要内容是return ['appid' => 'xxx'];就行 - 加载时用
Config::load('extra.wechat');(注意点号分隔,不是斜杠) - 别漏掉
return,空文件或 echo 输出会导致解析失败
最容易被忽略的是:配置文件里的键名本身也有规范——比如 url_route_on 是小写下划线,而 APP_DEBUG 是大写下划线,混用会导致配置不生效或被忽略。命名只是第一步,值的格式和作用域才是实际起效的关键。



















