变量$_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中,这似乎工作正常。仅在Windowsparse_ini_file
上返回一个空值的数组。
答案 0 :(得分:0)
将代码放在双引号中,避免使用等于=
db.username="${MYSQL_USERNAME}"
db.password="${MYSQL_PASSWORD}"
这可以解决您的问题。
每次要使用简单的.ini
和fopen()
函数将数据保存到文件中时,您都可以生成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);