今天我們將討論P(yáng)HP中的$_ENV變量,這個(gè)變量在PHP中被用來(lái)獲取環(huán)境變量。環(huán)境變量在當(dāng)前操作系統(tǒng)中被定義并且設(shè)置,而不是在PHP文件代碼里。這些值可以是不同的,例如在Linux中,這些變量通常和Shell和系統(tǒng)配置有關(guān)。現(xiàn)在,我們來(lái)看一些實(shí)際的例子,讓我們更清晰地了解這個(gè)變量的用途。
首先舉一個(gè)最簡(jiǎn)單的例子,要獲取當(dāng)前服務(wù)器的主機(jī)名:
<?php
echo "當(dāng)前服務(wù)器的主機(jī)名:" . $_ENV['HOSTNAME'];
?>
輸出可能是:當(dāng)前服務(wù)器的主機(jī)名:debian
在上述PHP代碼中,使用了KEY為HOSTNAME的$_ENV變量來(lái)獲取當(dāng)前主機(jī)的主機(jī)名。另外,在php.ini文件中通過(guò)設(shè)置variables_order變量為'EGPCS',就可以設(shè)置$_ENV變量在其他變量之后獲取,即$_ENV的優(yōu)先級(jí)比$GLOBALS、$_GET、$_POST、$_COOKIE都高。 現(xiàn)在,假設(shè)我們已經(jīng)有了一個(gè)配置文件,我們稱(chēng)之為.example.env,在這個(gè)配置文件中,我們?cè)O(shè)置了一些環(huán)境變量。現(xiàn)在來(lái)看如何通過(guò)PHP來(lái)解析.env文件,并把文件中定義的變量存儲(chǔ)到$_ENV中。 假設(shè)我們有一個(gè).env文件,內(nèi)容如下:MY_VAR=Example Variable
MY_OTHER_VAR=Another Example Variable
我們可以通過(guò)以下方式來(lái)讀取它們:<?php
$file = file_get_contents('.example.env');
$pairs = array_filter(array_map('trim', explode("\n", $file)));
foreach ($pairs as $pair) {
list($name, $value) = array_map('trim', explode('=', $pair, 2));
putenv("$name=$value");
$_ENV[$name] = $value;
}
echo $_ENV['MY_VAR']."<br>"; // prints 'Example Variable'
echo $_ENV['MY_OTHER_VAR']."<br>"; // prints 'Another Example Variable'
?>
在上述代碼中,我們首先使用file_get_contents函數(shù)讀取文件的全部?jī)?nèi)容,并將其分成字符串對(duì)。 接下來(lái),我們使用foreach循環(huán),對(duì)每一個(gè)匹配的鍵值對(duì)進(jìn)行解析。 經(jīng)過(guò)解析后,我們使用基于putenv的函數(shù)來(lái)將每個(gè)變量添加到環(huán)境變量中,并添加到$_ENV數(shù)組中。
總之,PHP的$_ENV變量是獲取系統(tǒng)環(huán)境變量的有用工具。在Linux系統(tǒng)中,您會(huì)發(fā)現(xiàn)很多系統(tǒng)變量在其中。相信通過(guò)以上實(shí)際示例中的講解,大家對(duì)$_ENV變量已經(jīng)能有了更深入的了解。