在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.png
server.png
因此著手在系統環境變量里新增的CI_ENV的項目:
setup.png
設定好之后,重啟應用程序池,甚至是重啟IIS服務都沒效果,簡直就要放棄了,
最后把服務器重啟了....
然后就行了。
ok.png