在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指令所列出的項目:

set
serve

因此著手在系統環境變量裡新增的CI_ENV的項目:

螢幕快照 2017-02-24 下午3.18.24

設定好之後,重啟應用程序池,甚至是重啟IIS服務都沒效果,簡直就要放棄了,

最後把服務器都重啟了….

然後就行了。

ok