在Apache环境下,为了区别是开发环境或是正式环境,在CodeIgniter Framework里,透过下面这行代码来取得环境名称:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
对应我们就正式环境里的htaccess里加了下面这个设定,就可以正确设置ENVIRONMENT这个系统常量。
SetEnv CI_ENV production
之后,我们就可以在代码里针对正式环境或是测试环境而有所区别的行为,比如:
// 依照执行环境不同指定资料库连线的db_debug属性
'db_debug' => (ENVIRONMENT !== 'production'),
同样的系统,应客户要求移植到Windows/IIS的环境底下时,htaccess就失效了,虽然Rewrite可以在web.config有对应的设定方式,SetEnv就一直找不到方法。
在经过不断的搜寻与尝试后,发现PHP里有一大部分的$_SERVER项目是对应Windows环境下Set指令所列出的项目:
因此着手在系统环境变量里新增的CI_ENV的项目:
设定好之后,重启应用程序池,甚至是重启IIS服务都没效果,简直就要放弃了,
最后把服务器重启了....
然后就行了。