2018年12月20日 星期四

$_ENV環境變數為空值

PHP中的$_ENV是伺服器中環境變數的數組,他是PHP中的超級全域變數,最近學習Laravel時有一.env的環境設定檔,其原理是其設定好的環境設定值,加載到PHP的$_ENV全域變數中。

基於好奇,在未啟動Laravel環境的狀態下,試著在PHP程式中把$_ENV倒出來,可使用的語法有三中
1. var_dump($_ENV);
2. print_r($_ENV);
3.
foreach ($ENV as $key =>$value){
echo $key . "==>" . $value . "<br>" 
}

結果發現倒出來的$_ENV全是空值

原來在php.ini中,有一 variables_order設定值,如果是設為GPCS,就不會顯示$_ENV環境變數。G指的是Get、P指的是Post、C指的是Cookie、S指的是Session,而ENV的代表英文為E,所以如果希望$_ENV能撈出伺服器上的環境變數,variables_order就應該設定為EGPCS

variables_order =  EGPCS

但是,看了一下,發現如果伺服器上的環境變數被撈光了,好像不太安全,所以其實php.ini的說明中也說了,發行版伺服器的php.ini設定建議還是採用GPCS。
ps.設定完後,要記得重起Apache2




沒有留言:

張貼留言