處理多環(huán)境?
開發(fā)者常常希望根據(jù)是生產(chǎn)環(huán)境還是開發(fā)環(huán)境能夠區(qū)分不同的定制行為,例如,如果在開發(fā)環(huán)境的程序當中輸出詳細的錯誤信息這樣做對開發(fā)者來說是非常有幫助的,但是這樣做的話在生產(chǎn)環(huán)境中會造成一些安全問題。 In development environments, you might want additional tools loaded that you don’t in production environments, etc.
環(huán)境常量?
CodeIgniter 默認使用 $_SERVER[‘CI_ENVIRONMENT’] 的值作為 ENVIRONMENT 常量,否則默認就是 ‘production’。這樣能夠根據(jù)不同服務(wù)器安裝環(huán)境定制不同的環(huán)境依賴。
Apache?
如果要獲取 $_SERVER[‘CI_ENVIRONMENT’] 的值可以在 .htaccess 的文件里,或者可以在Apache的配置文件里使用 SetEnv 命令進行設(shè)置
SetEnv CI_ENVIRONMENT development
nginx?
在 nginx 下,為了能夠在 $_SERVER 里顯示環(huán)境變量的值你必須通過 fastcgi_params 來傳遞。這樣允許它在虛擬主機上工作來替代使用 env 去為整個服務(wù)器設(shè)置它,即使在專用服務(wù)器上運行良好。你可以修改該服務(wù)器的配置為:
server {
server_name localhost;
include conf/defaults.conf;
root /var/www;
location ~* "\.php$" {
fastcgi_param CI_ENVIRONMENT "production";
include conf/fastcgi-php.conf;
}
}
可選方法適用于 nginx 和其它服務(wù)器,或者你也可以完全移除這部分邏輯,并根據(jù)服務(wù)器的 IP 地址設(shè)置常量(實例)。
使用這個常量,除了會影響到一些基本的框架行為外(見下一章節(jié)),在開發(fā)過程中你還可以使用常量來區(qū)分當前運行的是什么環(huán)境。
引導(dǎo)文件?
CodeIgnite 要求在 APPPATH/Config/Boot 下放置一個與環(huán)境名稱匹配的 PHP 腳本文件。這些文件包含你想為你的環(huán)境所做的符合要求的任何定制,無論是更新對錯誤顯示的設(shè)置,還是加載附加開發(fā)工具,或者是添加其他東西。系統(tǒng)會自動加載這些文件。在新的版本中為你創(chuàng)建好了以下文件:
* development.php
* production.php
* testing.php