В PHP я получаю следующее предупреждение всякий раз, когда пытаюсь подключиться к базе данных (через mysql_connect
)
Предупреждение: mysql_connect (): несоответствие заголовков и минорной версии клиентской библиотеки. Заголовки: 50162 Библиотека: 50524
В моем php -i
выводе в mysqli указаны следующие значения
Версия библиотеки клиентского API => 5.5.24
Версия заголовка клиентского API => 5.1.62
Я пробовал обновить php5-mysql и php, но у меня уже установлена последняя версия обоих. Как мне обновить версию заголовка, чтобы я перестал видеть это предупреждение?
РЕДАКТИРОВАТЬ
Все мои файлы MySQL должны быть обновлены до последней версии:
$ apt-get install mysql.*5.5
. . .
mysql-client-5.5 is already the newest version.
mysql-server-core-5.5 is already the newest version.
mysql-server-5.5 is already the newest version.
mysql-testsuite-5.5 is already the newest version.
mysql-source-5.5 is already the newest version.
Удаление старых версий
$ apt-get remove mysql.*5.1
. . .
Package handlersocket-mysql-5.1 is not installed, so not removed
Package mysql-cluster-client-5.1 is not installed, so not removed
Package mysql-cluster-server-5.1 is not installed, so not removed
Package mysql-client-5.1 is not installed, so not removed
Package mysql-client-core-5.1 is not installed, so not removed
Package mysql-server-5.1 is not installed, so not removed
Package mysql-server-core-5.1 is not installed, so not removed
Package mysql-source-5.1 is not installed, so not removed
Ответы:
Ваш PHP был скомпилирован с MySQL 5.1, но теперь он связывает библиотеку mysql семейства 5.5.X. Вам необходимо обновить PHP до версии, скомпилированной с MySQL 5.5, или вернуть клиентские библиотеки mysql к версии 5.1.x.
источник
Я использую MariaDB и имею аналогичную проблему.
С сайта MariaDB рекомендуется исправить с помощью
Запустите с более низким уровнем сообщения об ошибках:
$err_level = error_reporting(0); $conn = mysql_connect('params'); error_reporting($err_level);
Моя проблема исправлена с помощью драйвера mysqlnd в Ubuntu:
Ура!
[обновление: дополнительная информация] Установка этого драйвера также решает проблему PDO, которая возвращает целочисленное значение в виде строки. Чтобы сохранить тип как целое число, после установки mysqlInd сделайте следующее
$db = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass, array( PDO::ATTR_PERSISTENT => true)); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
источник
Для нового семейства MySQL 5.6 вам необходимо установить php5-mysqlnd, а не php5-mysql.
Удалите эту версию драйвера mysql
И установите это вместо
источник
То же самое и с MySQL:
Я читал эту ветку, пытаясь найти решение для MySQL, и я также видел ответ Кена, но я проигнорировал решение для MariaDB, потратив на это несколько часов. Мне было непонятно, может ли то же самое относиться к MySQL. Этот пост просто для того, чтобы сэкономить вам несколько часов, которые я потерял.
источник
Основная причина этой ошибки в том, что некоторое время назад PHP отделился от клиентских библиотек MySQL. Итак, что происходит (в основном на старых компиляциях linux), люди будут компилировать PHP для данной сборки клиента MySQL (это означает, что установленная версия MySQL не имеет значения), а не обновлять (в CentOS этот пакет указан как
mysqlclientXX
, гдеXX
представляет номер пакета). Это также позволяет сопровождающему пакета поддерживать более низкие версии MySQL. Это запутанный способ сделать это, но это был единственный способ, учитывая, что PHP и MySQL используют разные лицензии.MySQLND решает проблему, используя собственный собственный драйвер PHP (ND), который больше не зависит от клиента MySQL. Он также скомпилирован для используемой вами версии PHP. Это лучшее решение во всех отношениях, если только по той причине, что MySQLND создан для взаимодействия PHP с MySQL.
Если вы не можете установить MySQLND, вы можете игнорировать эту ошибку по большей части. Это больше похоже на уведомление, чем на что-либо. Звучит просто страшно.
источник
Чтобы скомпилировать php из исходного кода с собственным драйвером MySQL (mysqlnd) ,
cd /php/source/path ./configure <other-options> --with-mysql --with-mysqli --with-pdo-mysql make clean # required if there was a previous make, which could cause various errors during make make make install
От
/php/source/path/configure --help
.--with-mysql=DIR Include MySQL support. DIR is the MySQL base directory, if no DIR is passed or the value is mysqlnd the MySQL native driver will be used --with-mysqli=FILE Include MySQLi support. FILE is the path to mysql_config. If no value or mysqlnd is passed as FILE, the MySQL native driver will be used --with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory If no value or mysqlnd is passed as DIR, the MySQL native driver will be used
С помощью этих параметров можно включить одно или несколько расширений PHP MySQL.
Если значение не передано этим параметрам, или если значение равно
mysqlnd
, будет использоваться собственный драйвер MySQL.источник
--with-mysql
и--with-mysqli
опции, чтобы правильно использовать скомпилированный драйвер. Итак, на этот раз я снова выполнил свою команду configure: `--with-mysql = / home / stephane / programs / mariadb / install \ --with-mysqli = / home / stephane / programs / mariadb / install / bin / mysql_config` и проблема была решена. Теперь он использует правильную версию клиента MariaDB.У меня такой же конфликт php на моем сайте wordpress ...
Причина: я обновил версию wp 4.2 до версии 4.5 (несовпадение PHP и MySql)
Я изменил wp-db.php в строке 1515
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
к
if ( WP_DEBUG ) { $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); } else { $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); }
На моем сайте wordpress есть без ошибок
источник
Если бы у вас был доступ к cpanel или whm для веб-хостинга домена ...
В cPanel перейдите на вкладку «Программное обеспечение и услуги», >> и затем нажмите «Выбрать версию PHP» >> установите желаемую версию php ...
Например. Текущая версия PHP:
Версия PHP [5.2] (список доступных версий PHP 5.2, 5.3, 5.4, 5.5, 5.6)
Предупреждение: изменение модулей php и параметров php через PHP Selector для нативной версии php невозможно.
Я выбрал версию 5.6 php, после того как эта ошибка исчезла на моем сайте блога wordpress ...
источник
Warning: mysqli::mysqli(): Headers and client library minor version mismatch. Headers:50547 Library:100026
Я решил вышеуказанную ошибку, просто перестроив свой Apache:
cPanel Version 56.0 (build 25) Apache Version 2.4.18 PHP Version 5.5.30 MySQL Version 10.0.26-MariaDB
источник
У меня возникают эти проблемы, когда я использую Percona / MySQL 5.6, а драйвер php был скомпилирован с 5.5, а для некоторых приложений требуется php5-mysql, поэтому я пишу сценарий для восстановления драйверов.
https://github.com/falcacibar/php5-mysql-rebuild
источник
Для WHM и cPanel в некоторых версиях необходимо явно указать mysqli для сборки.
Используя WHM в CENTOS 6.9 xen pv [dc] v68.0.27, нужно было пересобрать Apache / PHP, просмотрев все параметры и выбрав mysqli для сборки. По умолчанию был создан устаревший mysql. Теперь сообщения об амортизации исчезли, и одно готово для будущих обновлений MySQL.
источник
Я столкнулся с той же проблемой на centos7. Удаление php-mysql и установка php-mysqlnd устранили проблему. Спасибо Карлосу Буэносвиносу Заморе за ваше предложение.
Вот мои команды на centos7 на всякий случай, если это может кому-то помочь, поскольку большинство ответов здесь основаны на Debian / Ubuntu.
Чтобы найти установленный пакет php-mysql
yum list installed | grep mysql
Чтобы удалить установленный пакет php-mysql
Чтобы установить php-mysqlnd
источник
Моя хостинговая компания посоветовала мне исправить это, отключив mysqli и активировав nd_mysqli в расширениях php.
Ошибка исчезла, но у меня нет знаний, чтобы понять, правильный ли это способ исправить это.
источник
Изменение версии PHP с 5.6 на 5.5 Исправлено .
Вам нужно перейти в панель управления> CGI Script и изменить версию PHP там.
источник