PHP: mysqli_connect - нет такого файла или каталога при использовании сокета localhost - PullRequest
0 голосов
/ 14 марта 2019

Я перехожу с mysql на mysqli. В настоящее время на моем сервере одновременно работают pdo, mysql и mysqli. Также PHP 5.6.34 работает в докере. Версия MySQL 10.2.16-MariaDB-log MariaDB Server, который работает на хост-компьютере. ОС 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 Ответ

0 голосов
/ 14 марта 2019

Вы делаете это неправильно.

Попробуйте код ниже.Измените учетные данные базы данных на ваши

<?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);
      ?>
...