Прежде всего, я пытаюсь убедиться, что я не показываю мой пароль 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 теперь терпит неудачу, давая мне этот ответ об ошибке:
«Не удалось подключиться: доступ запрещен для пользователя ‘username’@’chain-lightning.dreamhost.com’ (используя пароль: ДА)»
Что мне не хватает? Я трижды проверил, что текст в файле конфигурации такой же, как когда я использовал статические строки. Спасибо!
Ошибка, которую вы получаете в основном из-за данных, полученных из файла, не так, как вы думаете. все ваше значение будет добавлено с дополнительным значением новой строки.
от 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);
Других решений пока нет …