#php #mysql #mysqli #unix-socket
#php #mysql #mysqli #unix-сокет
Вопрос:
Я выполняю миграцию с mysql на mysqli.В настоящее время на моем сервере одновременно запущены pdo, mysql и mysqli. Также PHP 5.6.34 запущен в docker. Версия MySQL 10.2.16-MariaDB-регистрирует сервер MariaDB, который запущен на хост-компьютере. ОПЕРАЦИОННАЯ СИСТЕМА — CentOS Linux 7.
Скрипт для подключения к базе данных:
if($mysqli){//never works
$res = $GLOBALS["___mysqli_ston"] = mysqli_connect("localhost", "user", "pass" , NULL, 0, 'var/sockets/mysql.sock');
}
else{//always works
$res = mysql_connect(':/var/sockets/mysql.sock', "user", "pass" );
}
if (!$res){
die("err");
}
Подключение к БД с помощью mysql работает нормально. Но каждый раз, когда я пытаюсь подключиться к БД с помощью mysqli, получаю следующую ошибку:
( ! ) Предупреждение: mysqli_connect(): (HY000/2002): нет такого файла или каталога в /var/www/html/Lib_SQL.php в строке 20
Строка 20:
$res = $GLOBALS[«___mysqli_ston»] = mysqli_connect(«localhost», «user», «pass», NULL, 0, ‘var/sockets/mysql.sock’);
Я уже установил сокет по умолчанию в файле php.ini:
mysql.default_socket => /var/mysql/mysql.sock
Я также заметил, что принудительное подключение TCP / IP к базе данных не вызывает этого предупреждения, например:
$res = $GLOBALS["___mysqli_ston"] = mysqli_connect("hostname.com", "user", "pass" , NULL, 0, 'var/sockets/mysql.sock');
Итак, как мне использовать mysqli_connect для подключения к моей базе данных с использованием локального сокета unix? Есть какие-нибудь подсказки?
Комментарии:
1. Какая строка является строкой 20 ? Также избегайте использования
$GLOBALS
.2. Существует огромная разница между
/var/sockets
иvar/sockets
3. Кроме того,
$dbName
параметр должен быть пустой строкой, а неnull
Ответ №1:
Вы делаете это неправильно.
Попробуйте приведенный ниже код. Измените учетные данные базы данных на ваши
<?php
$dbhost = 'localhost';
$dbuser = 'db username here';
$dbpass = 'db -password here';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($conn);
?>