一、了解PHP $_ENV
1 PHP中的$_ENV是一个包含服务器端环境变量的数组。它是PHP中个一个超级全局变量,我们可以在PHP程序中的任何地方直接访问它。
2 $_ENV只是被动的接受服务器端的环境变量并把他们转换为数组元素。
3 由于$_ENV变量去接与服务器的环境变量,从不同的服务器上获取的$_ENV变量打印出的结果可能是完全不同的。所以无法像$_SERVER那样列出完整的列表。
4 var_dump($_ENV)结果:
array (size=37)
'ALLUSERSPROFILE' => string'C:\ProgramData' (length=14)
'APPDATA' => string'C:\windows\system32\config\systemprofile\AppData\Roaming' (length=56)
'CommonProgramFiles' => string'C:\Program Files\Common Files' (length=29)
'CommonProgramFiles(x86)' => string'C:\Program Files (x86)\Common Files' (length=35)
'CommonProgramW6432' => string'C:\Program Files\Common Files' (length=29)
'COMPUTERNAME' => string'LENOVO-PC' (length=9)
'ComSpec' => string'C:\windows\system32\cmd.exe' (length=27)
'configsetroot' => string'C:\windows\ConfigSetRoot' (length=24)
'easyplussdk' => string'"C:\Program Files (x86)\Common Files\lenovo\easyplussdk\bin"' (length=60)
'FP_NO_HOST_CHECK' => string'NO' (length=2) 'LOCALAPPDATA' => string'C:\windows\system32\config\systemprofile\AppData\Local' (length=54)
'MOZ_PLUGIN_PATH' => string'C:\Program Files (x86)\Foxit PhantomPDF\plugins\' (length=48)
'NUMBER_OF_PROCESSORS' => string'4' (length=1)
'OS' => string'Windows_NT' (length=10)
'Path' => string'C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:'... (length=620)
'PATHEXT' => string'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' (length=53)
'PROCESSOR_ARCHITECTURE' => string'AMD64' (length=5)
'PROCESSOR_IDENTIFIER' => string'Intel64 Family 6 Model 69 Stepping 1, GenuineIntel' (length=50)
'PROCESSOR_LEVEL' => string'6' (length=1)
'PROCESSOR_REVISION' => string'4501' (length=4)
'ProgramData' => string'C:\ProgramData' (length=14)
'ProgramFiles' => string'C:\Program Files' (length=16)
'ProgramFiles(x86)' => string'C:\Program Files (x86)' (length=22)
'ProgramW6432' => string'C:\Program Files' (length=16)
'PSModulePath' => string'C:\windows\system32\WindowsPowerShell\v1.0\Modules\' (length=51)
'PUBLIC' => string'C:\Users\Public' (length=15)
'READYAPPS' => string'C:\ProgramData\Lenovo\ReadyApps' (length=31)
'SystemDrive' => string'C:' (length=2)
'SystemRoot' => string'C:\windows' (length=10)
'TEMP' => string'C:\windows\TEMP' (length=15)
'TMP' => string'C:\windows\TEMP' (length=15)
'TVT' => string'C:\Program Files (x86)\Lenovo' (length=29)
'USERDOMAIN' => string'WORKGROUP' (length=9)
'USERNAME' => string'LENOVO-PC$' (length=10)
'USERPROFILE' => string'C:\windows\system32\config\systemprofile' (length=40)
'windir' => string'C:\windows' (length=10)
'AP_PARENT_PID' => string'8204' (length=4)
二、PHP $_ENV的设置
PHP的配置文件php.ini的配置项为: variables_order = "GPSC"
想要让$_ENV的值不为空,那么variables_order的值应该加上一个大写字母"E", variable_order = "EGPSC"
EGPSC表示: Enviroment, GET, POST, Cookie, Server
如果variable_order的配置总缺少E, 则PHP无法接受环境变量,那么$_ENV也就为空了
三、注意事项
由于开启了$_ENV,会导致一些性能损失,按php官方的说法是,在生成环境中不推荐使用。他们更推荐使用getenv(string $varname)函数来获取Enviroment中的值,二这点需要在编辑时就注意。
如果编程时用管理$_ENV, 而variables_order中又没有欸只为variables_order = "EGPCS",则程序运行时可能会报错。