gpt4 book ai didi

php - 找到 .ini 文件但内容丢失(parse_ini_file() 不工作)

转载 作者:行者123 更新时间:2023-11-30 22:00:04 26 4
gpt4 key购买 nike

我正在尝试创建一个安全的 mysql 连接,并且我创建了一个函数来创建连接和包含登录凭据的 db.ini 文件。

db.ini:

[database]
user = username
pass = password
db = mydb
addr = myhost

我已将 ini 文件放在我的学校项目文件夹中,它位于 public_html 之外。我正在使用此 php 代码获取 db.ini:

function dbConnect(){
if(!isset($mysqli)){
if( file_exists("../../../db.ini")){
echo "FILE EXISTS! <br>";
}
else{
echo "the file does not exist!";
}

$config = parse_ini_file("../../../db.ini");
print_r($config);
$mysqli = new mysqli($config['addr'], $config['user'], $config['pass'], $config['$db']);
}
if ($mysqli->connect_error) {
die( "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error);
}
return $mysqli;
}

输出是这样的:

FILE EXISTS! 
Failed to connect to MySQL: (2002) Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

因此该文件存在但 php 无法获取其内容。我该如何解决或绕过它?我可以将我的凭据保存为其他格式或其他格式吗?

最佳答案

问题不在于代码,而在于服务器设置。

parse_ini_file() - 函数被禁用,这可以通过添加 error_reporting( E_ALL ); 查看到 php 脚本的开头。

此问题已由 php.net parse_ini_file() 评论部分中的未知用户使用此函数解决:

<?php
function parse_ini_file_quotes_safe($f)
{
$r=$null;
$sec=$null;
$f=@file($f);
for ($i=0;$i<@count($f);$i++)
{
$newsec=0;
$w=@trim($f[$i]);
if ($w)
{
if ((!$r) or ($sec))
{
if ((@substr($w,0,1)=="[") and (@substr($w,-1,1))=="]") {$sec=@substr($w,1,@strlen($w)-2);$newsec=1;}
}
if (!$newsec)
{
$w=@explode("=",$w);$k=@trim($w[0]);unset($w[0]); $v=@trim(@implode("=",$w));
if ((@substr($v,0,1)=="\"") and (@substr($v,-1,1)=="\"")) {$v=@substr($v,1,@strlen($v)-2);}
if ($sec) {$r[$sec][$k]=$v;} else {$r[$k]=$v;}
}
}
}
return $r;
}
?>

关于php - 找到 .ini 文件但内容丢失(parse_ini_file() 不工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43675032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com