CodeIgniter 4 配置只需修改 app/Config/App.php 和 .env;运行时仅加载实际使用的配置类,.env 优先级最高但需严格遵循大写键名、无空格、点号路径等规范。

CodeIgniter 的配置不复杂,但默认结构容易让人误以为必须改很多文件才能跑起来——其实绝大多数项目只需动 app/Config/App.php 和 .env 两个地方。
哪些配置项真正在运行时起作用
CI4 启动时优先读 .env,再合并 app/Config/*.php 中的类属性。但不是所有类都会被加载:只有在请求生命周期中被容器解析或显式调用的配置类才生效。比如 app/Config/Logger.php 只在你调用 log_message() 时才参与初始化。
-
App.php控制基础路由、时区、字符编码等核心行为,必看 -
Database.php仅当使用Database服务时才载入,纯 API 项目可完全不碰 -
Cache.php默认是FileHandler,但若没调用cache(),它连目录都不创建
.env 覆盖规则和常见翻车点
.env 是 CI4 的配置中枢,但它的覆盖逻辑有隐含优先级:环境变量 > .env > 配置类默认值。问题常出在大小写和空格上。
- 键名必须全大写,
app.baseURL写成APP.BASEURL或app.baseurl都无效 - 值前后不能有空格,
CI_ENVIRONMENT = "development"中等号两边的空格会让 CI 读成空字符串 - 数组类配置(如数据库)不支持在
.env里直接写,得用database.default.hostname这种点号路径语法
APP_ENV=development APP_DEBUG=true app.baseURL="https://example.com" database.default.hostname="127.0.0.1"
删掉不用的 Config 类安全吗
只要你不 new 它、不通过 config() 函数获取它、也不在服务提供器里引用它,删掉 app/Config/Email.php 或 Security.php 完全不影响启动。CI4 的自动加载机制只扫描实际用到的类。
- 检查是否被引用:全局搜索
config('Email')或new Email() - 注意别删了被框架内部依赖的类,比如
App.php、Routes.php、Filters.php—— 缺失会直接报ClassNotFoundException - 精简后建议运行
php spark list确认命令仍可用,某些命令会触发额外配置加载
真正卡住人的从来不是配置项数量,而是环境变量加载时机和命名规范这两个细节。改完 .env 记得清 writable/cache/,否则旧缓存可能让新配置看似“不生效”。









