php的getenv()函数的数据来源,是$_ENV还是$_SERVER?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文重新来审视一下php
的getenv()
函数,主要分析的是它和$_SERVER
/$_ENV
的可能关系。从名字上来看,getenv()
就是从$_ENV
中获取数据。但是,真的是这样的么?

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码感想感悟。本文测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。当然本文的结论是:getenv()
函数的数据来源,既不是$_ENV
,也不是$_SERVER
。只能说类似,但是确实没有关系。
来自putenv()的数据
这个比较好理解,只不过是putenv()
函数的使用方式,有些奇怪罢了。参考代码:
输出:

相关文章:
来自命令行变量的数据
这种使用方式,虽然可行。但是实际应用中,似乎没看到谁这么使用过。基于windows
系统的cmd
,测试命令如下:
输出:

需要注意的是:不同操作系统下命令行是不一样的,参考文章:
来自$_ENV
的数据?
注意:$_ENV
里面不一定有数据的,这个与php.ini
里面的variables_order
设置有关,请以实际情况为准。
测试代码:

nginx
+php
输出:
纯php
输出:
结果表明:getenv()的数据,并不来源于$_ENV
。
来自$_SERVER
的数据?
注意:$_SERVER
里面不一定有数据的,这个与php.ini
里面的variables_order
设置有关,请以实际情况为准。
测试代码:

nginx
+php
输出:
纯php
命令行服务输出:
结果表明:getenv()的数据,并不来源于$_SERVER
。
相关文章
- https://newsn.net/say/php-www-ini.html
- https://newsn.net/say/php-www.html
- https://newsn.net/say/php-putenv-getenv.html
结束语
结论如下:getenv()
的数据来源,目前有两个稳定渠道:一个是putenv()
,另外一个是命令行里面传递的全局变量(不同操作环境命令行也不一样)。至于$_ENV
和$_SERVER
,目前认为它和getenv()
是平行的关系,可能共同从某个地方获得数据,各走各的独木桥。


