CodeIgniter 4 多环境配置核心是通过 ENVIRONMENT 常量识别环境并自动加载对应 Boot 文件及带后缀的配置类;推荐用 .env 或服务器变量设置,敏感信息须存于 .env 并禁止 Web 访问。

CodeIgniter 4 的多环境配置核心就两件事:让框架知道当前是开发、测试还是生产环境,再让不同环境自动加载对应的设置。它不靠复杂工具链,而是用轻量、明确的机制实现——你改一个值,整个行为就跟着变。
设置 ENVIRONMENT 常量
框架通过全局常量 ENVIRONMENT 判断当前环境,默认值是 production。你要做的,就是确保这个常量在框架启动前被正确赋值。
- 最常用方式:在项目根目录的
.env文件里写一行:CI_ENVIRONMENT=development(或testing、production) - Web 服务器级设置(更可靠,避免 .env 被意外提交):
• Apache:在.htaccess或虚拟主机配置中加SetEnv CI_ENVIRONMENT development
• Nginx:在fastcgi_param中添加fastcgi_param CI_ENVIRONMENT "development"; - 如果不想依赖服务器变量,也可以直接修改
public/index.php顶部的定义逻辑,比如按 IP 地址判断:define('ENVIRONMENT', $_SERVER['REMOTE_ADDR'] === '127.0.0.1' ? 'development' : 'production');
各环境自动加载对应配置
CodeIgniter 会根据 ENVIRONMENT 值,自动从 app/Config/Boot/ 目录加载同名 PHP 文件,比如 development.php。这些文件会在框架初始化早期执行,适合做环境专属操作。
-
app/Config/Boot/development.php:开启错误报告、加载调试工具栏、启用详细日志 -
app/Config/Boot/production.php:关闭错误显示、禁用调试工具、设置日志级别为 warning 或 error -
app/Config/Boot/testing.php:常用于切换测试专用会话驱动(如ArrayHandler)、重置数据库连接
按环境区分配置项
不只是引导文件,几乎所有配置类都支持环境适配。你可以在 app/Config/ 下为同一配置类创建带环境后缀的文件,例如:
-
app/Config/Database.php是通用配置 -
app/Config/Database.development.php会覆盖其中的$default数据库 host、username、password -
app/Config/Database.production.php可单独配置线上数据库地址和只读权限
这种机制也适用于 App.php(站点名称、时区)、Logger.php(日志路径与保留天数)等,无需硬编码判断。
安全与部署提醒
生产环境配置不是加功能,而是减风险:
- 确保
.env文件不在 Web 可访问路径下(CI4 默认已将public/设为文档根目录,.env在其上级,这是关键防线) - 禁用
display_errors和show_errors,防止敏感路径或数据库结构泄露 - 生产环境不要加载
DebugToolbar类库,也不要在app/Config/Boot/production.php中调用Services::toolbar() - 数据库密码、API 密钥等敏感值,统一放在
.env里,用getenv()或env()函数读取,别写死在 PHP 配置文件中


















