[CodeIgniter4]-處理多環境
- 2020 年 3 月 5 日
- 筆記
處理多環境
開發者常常希望根據是生產環境還是開發環境能夠區分不同的訂製行為,例如,如果在開發環境的程式當中輸出詳細的錯誤資訊這樣做對開發者來說是非常有幫助的,但是這樣做的話在生產環境中會造成一些安全問題。
環境常量
CodeIgniter 默認使用 $_SERVER[『CI_ENVIRONMENT』] 的值作為 ENVIRONMENT 常量,否則默認就是 『production』。這樣能夠根據不同伺服器安裝環境訂製不同的環境依賴。
.env
最簡單的方式是在你的 .env 配置文件里設置:
CI_ENVIRONMENT = development
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
默認框架行為的影響
CodeIgniter 系統中有幾個地方用到了 ENVIRONMENT 常量。這一節將描述 它對框架行為有哪些影響。
錯誤報告
將 ENVIRONMENT 常量值設置為 『development』,這將導致所有發生的 PHP 錯誤在客戶端請求頁面時顯示在瀏覽器上。相反,如果將常量設置為 『production』 將禁用所有錯誤輸出。在生產環境禁用錯誤輸出是 良好的安全實踐。
配置文件
另外,CodeIgnite 還可以根據不同的環境自動載入不同的配置文件,這在處理例如不同環境下有著不同的API Key的情況時相當有用。這在 配置類 文檔中的「環境」一節有著更詳細的介紹。