Page 1 of 1

MySQL подключение к сокету

Posted: Fri Aug 27, 2021 4:36 am
by magicum
Иимеется PHP 7.4
Percona 8.0.25

Смарт не может подключиться к MySQL по сокету.

Сокет задаём в config.php как:

Code: Select all

$config["db_server"] = '/var/run/mysqld/mysqld.sock';
===

После проверки файла includes/db-modules/mysql.php обнаружено странное:

Code: Select all

    if (isset($config["db_persistent"]) and $config["db_persistent"]) {
        $$link = @mysqli_connect('p:' . $config["db_server"], $config["db_username"], $config["db_password"], $config["db_database"], ($config["db_port"]) ? $config["db_port"] : 3306);
    } else {

      if ($config["db_server"][0] == '/')  { // socket

     $$link = @mysqli_connect('', '', '', $config["db_database"], '', $config["db_server"]);

      } else {

        $$link = @mysqli_connect($config["db_server"], $config["db_username"], $config["db_password"], $config["db_database"], ($config["db_port"]) ? $config["db_port"] : 3306);

      }
Если сокет, то не надо юзернейма и пароля, правда ведь? :D


Рабочий вариант вот:

Code: Select all

//              $$link = @mysqli_connect('', '', '', $config["db_database"], '', $config["db_server"]);
        $$link = @mysqli_connect('localhost', $config["db_username"], $config["db_password"], $config["db_database"], NULL, $config["db_server"]);
И да, в порт обязательно ставить NULL в этом случае, с пустотой промеж кавычек не работает, я проверял.

Также, весьма странная обработка db_persistent.

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 4:46 am
by admin
не совсем понял

"Если сокет, то не надо юзернейма и пароля, правда ведь? "

как это?

а что именно странно в персистент?

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 4:51 am
by admin
magicum wrote: Fri Aug 27, 2021 4:36 am Если сокет, то не надо юзернейма и пароля, правда ведь? :D
нет, не правда, нужен в любом случае

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 4:54 am
by magicum
admin wrote: Fri Aug 27, 2021 4:51 am нет, не правда, нужен в любом случае
Разумеется, нужен. То был сарказм.

В оригинальном файле mysql.php они пропущены. Почему - не знаю.

Code: Select all

      if ($config["db_server"][0] == '/')  { // socket

     $$link = @mysqli_connect('', '', '', $config["db_database"], '', $config["db_server"]);

      }

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 4:55 am
by magicum
>> а что именно странно в персистент?
В оригинальном файле mysql.php идёт проверка, что если указан персистент то подключаться только к порту.

Ну это же ваш код, не я ж его придумал.

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 5:02 am
by admin
Действительно пропущено, а почему так - сам не знаю.
Поправил в апе.

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 5:06 am
by magicum
Спасибо. А персистент?

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 5:15 am
by admin
тоже добавил)

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 5:16 am
by magicum
Спасибо.

Re: MySQL подключение к сокету

Posted: Fri Aug 27, 2021 5:20 am
by admin
NP)