php自带的parse_ini_file函数,是否可以完美读取.env文件?
发布于 作者:苏南大叔 来源:程序如此灵动~

单单就读取.env
配置文件这个需求来说,个人觉得系统自带的parse_ini_file()
就挺好用的。当然也并不能完美读取所有市面上的.env
文件/.ini
文件。但是,parse_ini_file()
贵在简洁。相比较vlucas/phpdotenv
的令人头大的复杂,parse_ini_file()
不得不说是非常简单好用。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码感想感悟。测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
迷你范例
.env
文件:
php
代码:
运行结果:

配置分组范例
可以写[]
分组,写了多个[]
分组的时候,一定要注意:尽量别设置同名的变量,避免误操作同名变量会产生覆盖关系。正确的做法是,给parse_ini_file()
添加第二个参数true
。
.env
:
输出值:

当然,没有添加第二个true
参数的话,不同分组之间的变量就会相互覆盖,从而产生重大误解。

.env格式注释要求
如果想要parse_ini_file()
较为完美的读取.env
文件,首先对注释的写法有要求。
- 以
#
开头,要求注释单独成行,不能写在变量后面。(vlucas/phpdotenv
则允许写在变量后面) - 注释里面不能出现
$
符号,否则解析失败。
下面的错误的写法:


相关文章
- https://newsn.net/say/php-yaml-parse.html
- https://newsn.net/say/php-dotenv.html
- https://newsn.net/say/php-putenv-getenv.html
结束语
虽然这个parse_ini_file()
并不能完美的处理.env
文件,但是很简单便捷。如果注意.env
文件和普通的ini
文件的写法的细微区别的话,这个自带的parse_ini_file()
,还是挺好用的。
如果追求降低io
读取的频率的话,苏南大叔觉得:
- 可以把读取结果放在
$_SERVER
或者$_SESSION
里面,就像vlucas/phpdotenv
所做的一样。 thinkphp
的传统做法也是,要使用putenv("$k=$v")
的形式,存入到$ENV
变量里面。
更多苏南大叔的php
经验文章,请点击:


