codeigniter 4 通过 .env 文件控制开发与生产模式,设 ci_environment = development 或 production 即可切换,影响错误显示、调试栏、日志级别、缓存及安全策略,修改后立即生效。

CodeIgniter 4 的开发模式和生产模式主要通过 .env 文件控制,而不是靠代码判断或环境变量硬编码。它不依赖服务器系统级的 PHP 环境变量(如 $_ENV['CI_ENVIRONMENT']),而是由框架在启动时读取项目根目录下的 .env 文件来决定行为。
修改 .env 文件启用对应模式
项目根目录下默认存在一个 .env.example 文件,需先复制为 .env(注意:该文件不能被 Web 目录直接访问,应放在 public/ 同级位置)。
打开 .env,找到这一行:
根据需要改为:
-
开发模式:
CI_ENVIRONMENT = development(默认,开启调试工具栏、详细错误提示、日志记录到writable/logs/) -
生产模式:
CI_ENVIRONMENT = production(关闭调试栏、隐藏敏感错误、日志级别更严格、禁用部分开发辅助功能)
改完保存即可,无需重启服务,下次请求自动生效。
模式切换带来的实际变化
不同模式会影响以下关键行为:
- 错误显示:development 下会显示完整错误堆栈;production 下只显示通用 500 页面,避免泄露路径或配置信息
- 调试工具栏:仅 development 模式下在页面底部显示性能、数据库、路由等实时信息
- 日志级别:development 默认记录 debug/info/warning/error;production 默认只记录 warning/error
- 缓存行为:某些自动加载类或配置在 production 下更倾向使用缓存,减少重复解析
-
CSRF 和 Session 安全策略:production 模式下对 Cookie 的
secure和httponly属性默认更严格(需配合 HTTPS 配置)
验证当前模式是否生效
可在控制器中临时加一行检查:
echo ENVIRONMENT; // 输出 development 或 production或者查看日志文件路径是否可写、页面底部是否有调试栏——这是最直观的确认方式。
注意事项
确保 .env 文件权限合理(如 Linux 下设为 644),且 Web 服务器用户有读取权限;同时确认 public/.htaccess 或 Nginx 配置未屏蔽对 .env 的访问(其实不应被 Web 访问,只要不在 public/ 内就安全)。











