codeigniter 4环境变量配置核心是“.env文件+app.php”,.env为最高优先级配置中枢,需全大写键名、点号分隔、等号无空格、数组展开;app.php仅设baseurl(留空由.env控制)、timezone等全局行为;多环境靠服务器变量切换,改配置后须清缓存。

CodeIgniter环境变量配置写得规范实用,关键不在“多”,而在“准”和“稳”。真正起作用的就两个地方:项目根目录下的 .env 文件,以及 app/Config/App.php。其他配置类(比如 Database.php、Cache.php)只有用到才加载,不碰它们不影响运行。
优先用 .env 管理所有可变参数
.env 是 CI4 的配置中枢,它优先级最高,且支持环境隔离。写的时候必须遵守三条铁律:
- 键名全大写、用英文点号分隔路径,比如 APP.BASEURL、DATABASE.DEFAULT.HOSTNAME;写成 app.baseurl 或 APP_BASEURL 都无效
- 等号前后不能有空格,APP_DEBUG=true 可以,APP_DEBUG = true 就会读成空字符串
- 数组类配置(如数据库)不能直接写 JSON,要用点号展开:把
['default' => ['hostname' => '127.0.0.1']]写成 DATABASE.DEFAULT.HOSTNAME="127.0.0.1"
App.php 专注核心行为,别堆砌配置
App.php 是唯一必须修改的 PHP 配置类,只放真正影响全局行为的项:
- baseURL:建议留空,由 .env 中的 APP_BASEURL 控制,避免硬编码域名
-
timezone:设为
'Asia/Shanghai'这类标准时区标识,别用 +8 或 CST - charset 和 language:保持 UTF-8 和 en 启动态,语言包按需加载
- 路由相关如 uriProtocol 建议保持
'AUTO',除非明确知道服务器不支持 PATH_INFO
多环境切换靠 .env + 服务器变量,别改 index.php
不同环境(dev/test/prod)只需换一个 .env 文件,再配合服务器设置环境变量即可:
- 开发机用命令行启动时加:
CI_ENVIRONMENT=development php spark serve - Apache 生产环境加:
SetEnv CI_ENVIRONMENT production到虚拟主机配置里 - Nginx 加:
fastcgi_param CI_ENVIRONMENT production; - 绝对不要直接改
index.php里的define('ENVIRONMENT', ...)—— 那是 CI3 的老习惯,CI4 已弃用
改完记得清缓存,否则新配置可能不生效
CI4 会把配置合并后缓存到 writable/cache/,尤其改了 .env 后,旧缓存会让新值“看起来没变”:
- 执行
php spark cache:clear清掉全部缓存 - 或者手动删掉
writable/cache/config/目录下的文件 - 顺手跑一次
php spark list,确认命令能正常加载,避免因配置缺失导致服务提供器报错











