处理多环境
开发者常常希望根据是生产环境还是开发环境能够区分不同的定制行为,例如,如果在开发环境的程序当中输出详细的错误信息这样做对开发者来说是非常有帮助的,但是这样做的话在生产环境中会造成一些安全问题。
环境常量
CodeIgniter 默认使用 $_SERVER[‘CI_ENVIRONMENT’] 的值作为 ENVIRONMENT 常量,否则默认就是 ‘production’。这样能够根据不同服务器安装环境定制不同的环境依赖。
Apache
如果要获取 $_SERVER[‘CI_ENVIRONMENT’] 的值可以在 .htaccess 的文件里,或者可以在Apache的配置文件里使用 SetEnv 命令进行设置
SetEnv CI_ENVIRONMENT development
nginx
在 nginx 下,为了能够在 $_SERVER 里显示环境变量的值你必须通过 fastcgi_params 来传递。这样允许它在虚拟主机上工作来替代使用 env 去为整个服务器设置它,即使在专用服务器上运行良好。你可以修改该服务器的配置为:
server {
server_name localhost;
include conf/defaults.conf;
root /var/www;
location ~* ".php$" {
fastcgi_param CI_ENVIRONMENT "production";
include conf/fastcgi-php.conf;
}
}
可选方法适用于 nginx 和其它服务器,或者你也可以完全移除这部分逻辑,并根据服务器的 IP 地址设置常量(实例)。
使用这个常量,除了会影响到一些基本的框架行为外(见下一章节),在开发过程中你还可以使用常量来区分当前运行的是什么环境。
引导文件
CodeIgnite 要求在 APPPATH/Config/Boot 下放置一个与环境名称匹配的 PHP 脚本文件。这些文件包含你想为你的环境所做的符合要求的任何定制,无论是更新对错误显示的设置,还是加载附加开发工具,或者是添加其他东西。系统会自动加载这些文件。在新的版本中为你创建好了以下文件:
* development.php
* production.php
* testing.php