CodeIgniter4 處理多環(huán)境

2020-08-17 14:53 更新

開(kāi)發(fā)者常常希望根據(jù)是生產(chǎn)環(huán)境還是開(kāi)發(fā)環(huán)境能夠區(qū)分不同的定制行為,例如,如果在開(kāi)發(fā)環(huán)境的程序當(dāng)中輸出詳細(xì)的錯(cuò)誤信息這樣做對(duì)開(kāi)發(fā)者來(lái)說(shuō)是非常有幫助的,但是這樣做的話在生產(chǎn)環(huán)境中會(huì)造成一些安全問(wèn)題。

環(huán)境常量

CodeIgniter 默認(rèn)使用 $_SERVER[‘CI_ENVIRONMENT’] 的值作為 ENVIRONMENT 常量,否則默認(rèn)就是 ‘production’。這樣能夠根據(jù)不同服務(wù)器安裝環(huán)境定制不同的環(huán)境依賴。

.env

最簡(jiǎn)單的方式是在你的 .env 配置文件里設(shè)置:

  1. CI_ENVIRONMENT = development

Apache

如果要獲取 $_SERVER[‘CI_ENVIRONMENT’] 的值可以在 .htaccess 的文件里,或者可以在Apache的配置文件里使用 SetEnv 命令進(jìn)行設(shè)置

  1. SetEnv CI_ENVIRONMENT development

nginx

在 nginx 下,為了能夠在 $_SERVER 里顯示環(huán)境變量的值你必須通過(guò) fastcgi_params 來(lái)傳遞。這樣允許它在虛擬主機(jī)上工作來(lái)替代使用 env 去為整個(gè)服務(wù)器設(shè)置它,即使在專用服務(wù)器上運(yùn)行良好。你可以修改該服務(wù)器的配置為:

  1. server {
  2. server_name localhost;
  3. include conf/defaults.conf;
  4. root /var/www;
  5. location ~* "\.php$" {
  6. fastcgi_param CI_ENVIRONMENT "production";
  7. include conf/fastcgi-php.conf;
  8. }
  9. }

可選方法適用于 nginx 和其它服務(wù)器,或者你也可以完全移除這部分邏輯,并根據(jù)服務(wù)器的 IP 地址設(shè)置常量(實(shí)例)。

使用這個(gè)常量,除了會(huì)影響到一些基本的框架行為外(見(jiàn)下一章節(jié)),在開(kāi)發(fā)過(guò)程中你還可以使用常量來(lái)區(qū)分當(dāng)前運(yùn)行的是什么環(huán)境。

引導(dǎo)文件

CodeIgnite 要求在 APPPATH/Config/Boot 下放置一個(gè)與環(huán)境名稱匹配的 PHP 腳本文件。這些文件包含你想為你的環(huán)境所做的符合要求的任何定制,無(wú)論是更新對(duì)錯(cuò)誤顯示的設(shè)置,還是加載附加開(kāi)發(fā)工具,或者是添加其他東西。系統(tǒng)會(huì)自動(dòng)加載這些文件。在新的版本中為你創(chuàng)建好了以下文件:

  1. * development.php
  2. * production.php
  3. * testing.php

默認(rèn)框架行為的影響

CodeIgniter 系統(tǒng)中有幾個(gè)地方用到了 ENVIRONMENT 常量。這一節(jié)將描述 它對(duì)框架行為有哪些影響。

錯(cuò)誤報(bào)告

將 ENVIRONMENT 常量值設(shè)置為 ‘development’,這將導(dǎo)致所有發(fā)生的 PHP 錯(cuò)誤在客戶端請(qǐng)求頁(yè)面時(shí)顯示在瀏覽器上。相反,如果將常量設(shè)置為 ‘production’ 將禁用所有錯(cuò)誤輸出。在生產(chǎn)環(huán)境禁用錯(cuò)誤輸出是良好的安全實(shí)踐。

配置文件

另外,CodeIgnite 還可以根據(jù)不同的環(huán)境自動(dòng)加載不同的配置文件,這在處理例如不同環(huán)境下有著不同的API Key的情況時(shí)相當(dāng)有用。這在配置類文檔中的“環(huán)境”一節(jié)有著更詳細(xì)的介紹。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)