ThinkPHP5.0命令行模式默认加载application/config.php、database.php等常规配置及extra/下扩展配置,但不自动加载模块级配置(如application/index/config.php),需手动引入或写入全局配置。

命令行模式默认加载哪些配置
执行 php think xxx 时,框架启动流程会经过 start.php → base.php → App::run(),期间自动完成以下配置加载:
- 应用根目录的
application/config.php(必载) - 同目录下的
database.php、route.php、cache.php等独立配置文件(按存在且被系统识别的名称加载) -
application/extra/目录中所有 PHP 文件(如application/extra/app.php、application/extra/log.php),自动合并进全局配置 - 框架惯例配置
thinkphp/convention.php(底层默认值,不可覆盖但可被应用配置覆盖)
模块配置不会自动加载
Web 请求中,访问 index 模块时会额外加载 application/index/config.php;但命令行默认不绑定模块,因此模块级配置文件不会被自动引入。
如果你在命令中需要使用某个模块的专属配置(比如数据库连接前缀、API密钥等),有两种稳妥方式:
- 把该配置项直接写入
application/config.php或application/extra/module_xxx.php,确保全局可读 - 在自定义命令类中手动加载:
$moduleConfig = config(''index.'', '', APP_PATH . ''index/config.php'');
注意路径要正确,且需确保该文件返回的是合法 PHP 数组
如何验证当前命令行已加载的配置
可在自定义命令的 execute() 方法中快速调试:
立即学习“PHP免费学习笔记(深入)”;
$output->writeln(print_r(config('database'), true)); // 查看数据库配置
$output->writeln(print_r(config('app'), true)); // 查看 app 配置项
$output->writeln('Extra configs loaded: ' . implode(', ', array_keys(config())));
这样能直观确认哪些配置已生效,避免因路径错误或命名冲突导致读取失败。
特殊场景:切换运行模式影响配置加载
若项目启用了多模式(如 common、sae),且在 common.php 中定义了 $mode['config'],则命令行也会加载对应模式配置文件(如 thinkphp/mode/common.php 指定的 convention.php 或自定义配置)。但绝大多数项目用默认 common 模式,无需额外干预。



















