CodeIgniter多环境切换的核心是通过.env文件统一管理环境变量并动态加载配置。推荐使用原生DotEnv支持,将数据库、安全等敏感配置抽离至.env,Config类中用env()函数读取;也可按环境分组配置文件实现严格隔离。

CodeIgniter多环境切换时,配置文件管理的核心是分离环境变量与集中控制加载逻辑,避免手动改配置、减少出错风险。关键不在于写多少配置,而在于让框架自动识别当前环境并加载对应设置。
用 .env 文件统一管理环境变量
CodeIgniter 4 原生支持 .env 文件,这是最推荐的方式。它把数据库地址、密钥、调试开关等敏感或变动项抽离到项目根目录的 .env 中,不随代码提交,也无需修改 PHP 配置文件。
- 确保
app/Config/Boot/production.php或index.php中已启用DotEnv::load() - 在
.env中写:CI_ENVIRONMENT = productiondatabase.default.hostname = db-prod.example.comapp.baseURL = https://admin.example.com - 所有 Config 类(如
Database.php、App.php)中,直接用$_ENV['database.default.hostname']或env('database.default.hostname')获取值
按环境分组配置文件(可选但清晰)
若项目需严格隔离配置(比如测试环境用 SQLite、生产用 MySQL),可在 app/Config 下建子目录:
app/Config/development/Database.phpapp/Config/production/Database.php- 在主
app/Config/Database.php中根据CI_ENVIRONMENT动态 require 对应版本:require_once APPPATH . 'Config/' . ENVIRONMENT . '/Database.php';
这种方式适合配置差异大、团队协作要求高、或需审计配置变更的场景。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
数据库配置自动适配
数据库是最常变的部分。不要在 app/Config/Database.php 中硬编码 host/user/password,而是:
- 定义一个通用连接组(如
default),所有环境共用结构 - 字段值全部从
.env读取:'hostname' => env('DB_HOST', 'localhost'),'username' => env('DB_USERNAME', 'root'),'password' => env('DB_PASSWORD', ''), - 开发时
.env写DB_HOST=localhost,上线后改为DB_HOST=10.0.2.5,无需动任何 PHP 文件
会话与安全配置随环境生效
比如 Session 存储路径、HTTPS 强制、密码哈希方式,都该响应环境变化:
-
app/Config/App.php中:$config['sessionDriver'] = env('SESSION_DRIVER', 'files');$config['forceGlobalSecureRequests'] = (bool) env('FORCE_HTTPS', false); - 生产环境的
.env加:SESSION_DRIVER = databaseFORCE_HTTPS = trueHASH_METHOD = bcrypt
这样既能保证开发时轻量(用 files 驱动),又能让生产环境自动启用更安全的配置。

















