【发布时间】:2017-04-28 07:57:48
【问题描述】:
我正在尝试创建一个安全的 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 无法获取其内容。我该如何解决或绕过它?我可以将我的凭据保存为其他格式吗?
【问题讨论】:
-
print_r($config);是否返回空值?如果是这样,那么该路径可能不正确。 -
sudo service mysql status命令的输出是什么? -
@Mojo Allmighty 如果我在本地运行我的脚本,它会打印值,但在服务器上它不会返回任何内容。
-
我联系了学校服务台,结果发现问题不在于我的代码,而在于服务器设置。出于安全原因,parse_ini_file() 函数被禁用。但我从他们那里得到了另一个功能。
标签: php mysql security credentials ini