parse_ini_file不解析自定义env变量

时间:2017-11-02 08:39:24

标签: php environment-variables

变量$_ENV['MYSQL_USERNAME']$_ENV['MYSQL_PASSWORD']是通过vlucas的dotenv插件设置的(它们是从.env文件中读取并存储为env变量)。

当我尝试通过parse_ini_file函数解析.ini文件中的这段文本时:

db.username = ${MYSQL_USERNAME}
db.password = ${MYSQL_PASSWORD}

它返回:

array(db.username => '', db.password => ''); 

当我在我的vhosts文件(SetEnv MYSQL_USERNAME bla)中设置这2个MYSQL变量时,parse_ini_file确实用“bla”替换了用户名var。

我不明白为什么.env方法不起作用。

编辑:在linux中,这似乎工作正常。仅在Windows parse_ini_file上返回一个空值的数组。

1 个答案:

答案 0 :(得分:0)

将代码放在双引号中,避免使用等于=

的空格
db.username="${MYSQL_USERNAME}"
db.password="${MYSQL_PASSWORD}"

这可以解决您的问题。

更新

每次要使用简单的.inifopen()函数将数据保存到文件中时,您都可以生成fwrite()个文件。

// destroy old INI file
if(file_exists('example.ini'))
    unlink('example.ini');
// generate new INI file
$example = fopen("example.ini", "w");
$str="
; User data
db.username=\"${MYSQL_USERNAME}\"
db.password=\"${MYSQL_PASSWORD}\"
";
fwrite($example, $str);
fclose($example);