PHP增加 ENV變數

2021-08-04 10:23:01 字數 1891 閱讀 9652

[前言]:

在日常開發過程中,我們常常會將一些系統或模組配寫在配置檔案裡。這樣便於程式維護與修改。通常的配置檔案有.ini , .xml等。配置檔案的好處在於:

1,便於管理。

2,可讀性高。

但是,使用配置檔案也會有壞外,即:

1,安全性差。如果採用加密方法,會帶來解密效能上的開銷。

2,多伺服器佈署時,容易造成檔案內容差異,從而影響程式正常執行。

為了解決以上安全問題,通常的做法是將內容設定在系統中,使用環境變數方式進行配置。下面我們來講一下如何在lnmp(linux + nginx + mysql + php-fpm + php )中進行環境變數的配置。

[操作]:

環境:debian linux os

1,設定系統環境變數:

#vi /etc/profile

如增加乙個環境變數:

export my_redis_host="localhost"

2,修改php-fpm.conf,設定php環境變數:

#vi /etc/php5/fpm/php-fpm.conf

增加:env[my_redis_host]=$my_redis_host

3,修改php-fpm啟動指令碼。

因為每次要使系統變數生效,都必須source /etc/profile,而php-fpm啟動時,也需要作此操作。因此,需要修改php-fpm啟動指令碼。

如使用apt-get安裝的,則:

#vi /etc/init.d/php-fpm

在path等環境變數定義之後,加入一行:

. /etc/profile

注意,

點號與路徑之間有空格

。實際上.與source是一樣的,但是這裡用source會報錯

還要修改/etc/profile的許可權,因為php-fpm啟動使用者是www-data , 而/etc/profile的許可權使用者為root,這裡為了簡章,將/etc/profile的許可權設為「777」,即:

#chmod 777 /etc/profile

4,修改php.ini配置。

因為php.ini預設不載入$_env變數定義,如果此時檢視phpinfo(),會發現我們設定的環境變數為"no value"。

#vi /etc/php5/fpm/php.ini

修改:variables_order為:

variables_order="egpcs"

5,重啟php-fpm

#service php5-fpm restart

6,測試設定結果。

檢視phpinfo(),在"enviroment variables" 一節與「php variables」一節內可能看到我們剛才設定的變數名及變數值。

[補充]:

1,php web可以正常得到$_env的變數, php-cli模式取不到$_env。即:

php -r 'print_r($_env);'

得到結果:array()

這是因為php cli用的是另外乙個php.ini,其variables_order沒有開啟env變數。其使用的是:/etc/php5/cli/php.ini,按[4]說明開啟即可。

碰到這個問題,可以使用指定載入配置檔案(.ini)來測試是否是php.ini引起的。即:

php -c '/etc/php5/fpm/php.ini' -r 'print_r($_env)'

PHP超全域性變數之 ENV

1 env 是乙個包含伺服器端環境變數的陣列,不同系統不完全一樣。部分變數示例 env hostname 伺服器的主機名 env shell 系統 shell 2 env會為空,其原因通常是php的配置檔案php.ini的配置項為 variables order gpcs 要想讓 env的值不為空,...

env環境變數和模式

env.在所有的環境中被載入,當你指定了環境,它也會合併,並且優先順序大於.env,沒有指定環境時先找它。env.development指定開發環境配置 env.production指定生產環境配置,當你build執行時就觸發這個 console.log 當前 process.env.模式是 vue...

env前端環境變數配置

專案有開發環境 測試環境 線上環境,裡面的介面網域名稱等是不同的。每次除錯或者打包的時候手動改動各個變數,比較麻煩,也容易出錯,所以用自動化方式直接配置的不同的環境變數。在專案根目錄下新增檔案,並配置變數 env.development 本地環境變數 node env development env...