.env文件是CI4管理环境配置的核心方式,需重命名为.env并取消注释CI_ENVIRONMENT等行,其键值对(如app.baseURL、database.default.hostname)会自动覆盖PHP配置类,生效于框架启动早期。

.env 文件是 CodeIgniter(尤其是 CI4)管理环境配置的核心方式,它不写死在代码里,而是通过纯文本键值对动态控制数据库、调试开关、运行环境等关键参数。用对了,开发、测试、生产三套配置就能完全隔离,换环境只需改一个文件。
基本用法:重命名 + 取消注释 + 填值
项目根目录下默认有一个 env 文件(不是 .env)。第一步必须把它重命名为 .env(注意开头的点),否则框架根本不会读取。第二步打开这个文件,找到类似下面这行:
删掉开头的 #,再改成你当前需要的环境:
-
CI_ENVIRONMENT = development(开发时开启调试栏、详细错误) -
CI_ENVIRONMENT = testing(跑单元测试用) -
CI_ENVIRONMENT = production(上线后关闭错误输出、启用缓存)
常用配置项怎么填(以数据库和URL为例)
除了环境变量,.env 还能直接定义数据库连接、基础 URL 等。例如:
-
app.baseURL = "https://yoursite.local/"—— 决定生成链接、重定向、静态资源路径的基准地址 database.default.hostname = "localhost"database.default.username = "root"database.default.password = "123456"database.default.database = "myapp_db"database.default.DBDriver = "MySQLi"
这些值会自动覆盖 app/Config/Database.php 或 app/Config/App.php 中的对应设置,无需手动修改 PHP 配置文件。
注意事项:权限、生效时机与常见失效原因
.env 文件在框架启动早期就被读取(通过 bootstrap.php),所以它只影响后续加载的配置。但有几点容易出错:
- Web 服务器(如 Apache/Nginx)必须允许读取
.env—— 不要把它放到可被公网直接访问的目录下(比如不要放在public/里) - 如果用了 Apache,确保
.htaccess没有屏蔽隐藏文件;Nginx 用户需确认location ~ /\.env已禁止访问 - 改完
.env后,浏览器缓存或 OPcache 可能导致旧配置还在生效,建议清浏览器缓存 + 重启 Web 服务或执行php spark cache:clear - 某些共享主机禁用
getenv(),这时需在index.php顶部手动加载:if (!isset($_SERVER['CI_ENV'])) { $_SERVER['CI_ENV'] = 'development'; }
进阶:不同环境共用一份 .env?不推荐
虽然技术上可以靠部署脚本替换 .env,但更稳妥的做法是:每个环境独立维护自己的 .env 文件,并把它排除在 Git 版本控制之外(加到 .gitignore)。这样避免密钥泄露,也防止开发配置误上生产。


















