putenv/getenv、$_ENV 和 phpinfo(INFO_ENVIRONMENT) 是三個完全不同的環境儲存區。執行 putenv("x=y") 不會影響 $_ENV;但同樣地,執行 $_ENV["x"]="y" 也不会影響 getenv("x")。而且它們都不會影響 phpinfo() 中傳回的內容。
假設在執行以下程式碼之前,USER 環境變數定義為 "dave"
<?php
print "env is: ".$_ENV["USER"]."\n";
print "(doing: putenv fred)\n";
putenv("USER=fred");
print "env is: ".$_ENV["USER"]."\n";
print "getenv is: ".getenv("USER")."\n";
print "(doing: set _env barney)\n";
$_ENV["USER"]="barney";
print "getenv is: ".getenv("USER")."\n";
print "env is: ".$_ENV["USER"]."\n";
phpinfo(INFO_ENVIRONMENT);
?>
印出
env is: dave
(doing: putenv fred)
env is: dave
getenv is: fred
(doing: set _env barney)
getenv is: fred
env is: barney
phpinfo()
環境
變數 => 值
...
USER => dave
...