MySQL连接的硬编码用户/传递工作,但文件中的字符串不工作

时间:2017-01-20 07:21:10

标签: php mysql

首先,我试图确保我没有在索引页面的源代码中显示我的MySQL密码。我已经决定制作一个" mysql.conf"提供我需要的信息就足够了。

以下是代码部分,预配置文件。这没有任何问题:

$dbhost = "mysql.host.com";
$dbuser = "username";
$dbpass = "password";
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

现在,这是配置文件的内容(mysql.conf):

mysql.host.com
username
password

代码的相应更改......

$dbConfig = file("./config/mysql.conf");
$dbhost = $dbConfig[0];
$dbuser = $dbConfig[1];
$dbpass = $dbConfig[2];
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

但是,随着使用配置文件的更改,MySQL连接现在失败,给我这个错误响应:

"无法连接:用户访问被拒绝'用户名' @' chain-lightning.dreamhost.com' (使用密码:是)"

我错过了什么?我已经三次检查配置文件中的文本与我使用静态字符串时的文本相同。谢谢!

1 个答案:

答案 0 :(得分:1)

您获得的错误主要是因为数据来自文件并不像您想象的那样。所有值都将添加额外的换行值。

来自http://php.net/manual/en/function.file.php

  

返回数组中的文件。数组的每个元素对应于   文件中的一行,换行符仍然附加。

对你的变量使用trim函数它会正常工作。

$dbConfig = file("./config/mysql.conf");
$dbhost = trim($dbConfig[0]);
$dbuser = trim($dbConfig[1]);
$dbpass = trim($dbConfig[2]);

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

或者你可以在文件功能中使用 FILE_IGNORE_NEW_LINES 标志

$dbConfig = file("./config/mysql.conf", FILE_IGNORE_NEW_LINES);
$dbhost = $dbConfig[0];
$dbuser = $dbConfig[1];
$dbpass = $dbConfig[2];

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);