如何使用 php 函数 putenv 和 getenv ?env 函数范例大全
发布于 作者:苏南大叔 来源:程序如此灵动~php
里面有一组函数,叫做putenv()
和getenv()
。那么通过getenv()
可以获得环境变量,而设置环境变量的途径,可就不仅仅局限于putenv()
了。而且如何理解php
的环境变量这个说法呢?是不是感觉也挺陌生的?如果是java
或者node
的话,这个环境变量的说法,就似乎能解释通了。
如果大家认真阅读了苏南大叔的上一篇文章的话,知道可以通过单独的php
命令来启动www服务。那么就可以知道,这个时候的php
和node
的用法是很相似的。这个时候,就可以通过命令行传递个环境变量参数了。
php获取环境变量值
获取变量值的方法,似乎只有一种。就是下面的这个函数。
echo getenv("<变量名>");
例如:
echo getenv("var1");
那么如何设置这个环境变量值呢?这里,苏南大叔给出了下面两个方案。
方案一:linux或者mac系统通过export
设置环境变量
export var1=val1; php -S <域名>:<端口>
这个export
命令,只存在于linux或者mac系统中,win系统是没有这个export
命令的。
下面是值得注意的两点:
- 在
php
字样前面,在export
语句后面,两者之间有个英文分号;
,当然您还可以用&&
来替换它。在win
下面,如果出现类似语句的话,建议使用&&
。 export
是在整个命令行窗口运行期间生效的,命令行窗口中一旦设置了某个值,只要这个窗口还存着,这个值就一直是生效的,并不会因为php的www被ctrl+c
了而消失。
方案二:mac(linux)环境,徒手直接设置环境变量
这个方案简单暴力,不拖泥带水。不带有任何的多余字符,自己看图。
方案三:win
环境,cmd
使用set
设置环境变量
export
在win下面不生效,苏南大叔改用了set
来做类似设置。
set var1=val1 && php -S <域名>:<端口> -t <root_path>
方案四:win
环境,powershell
使用$env:
设置环境变量
这里需要注意的是:
powershell
的相关命令里面是两句话,不能用&&
进行连接。cmd
里面的set
和&&
,对于powershell
都是失效的。- 变量的值必须用引号引起来,使用中文的引号也是可行的(震惊吧?试试看?)。
$env:var1="aaa"
php -S localhost:9001 -t ./
方案五:通用方案,通过putenv()
设置环境变量
下面的语句中,苏南大叔通过putenv()
,设置了一个环境变量var1
,它的值是val1
。然后我们就可以通过getenv("var1")
来获得这个环境变量值val1
了。本方法不分win
还是mac
,通用。
but,因为这个putenv
要写在php代码中,而不是命令行里面,苏南大叔在这里就有些迷糊了,这么写有什么好处?和普通的变量赋值,感觉上是一样一样的嘛。聪明的读者,您说是嘛?
putenv("var1=val1");
下面这个截图,是苏南大叔写的一个实际的应用例子。
方案六:使用流行框架里面的.env
文件
这个.env
文件,也可以设置类似环境变量。不过并不是php原生支持的功能,都是由第三方包或框架提供的功能。这里不做过多描述,大家知道有这个事情即可。比如,目前较流行的thinkphp5
或者laravel
等框架里面,都有类似的.env
功能。
查看所有的环境变量
打印一下$_ENV
即可得到所有的环境变量,会有惊喜哦。
苏南大叔认为:这个操作有越权的嫌疑!获得了很多不该知道的服务器信息!
相关链接
结论
这个export
设置环境变量的办法,是官方推荐的方法。当然了,这种应用场景,确实太罕见了。一般人也不会这么使用,所以,大家了解一下就ok了。您说对吧?
更多php相关经验文章,请点击这里查看。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。