it-swarm.com.ru

Несоответствие младших версий и клиентской библиотеки

В 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
78
Ian Hunter

Ваш PHP был скомпилирован с MySQL 5.1, но теперь он связывает библиотеку mysql из семейства 5.5.X . Вам нужно обновить PHP до версии, скомпилированной с MySQL 5.5, или вернуть обратно клиентские библиотеки mysql до 5.1.х.

30
dAm2K

Я использую MariaDB и у меня похожая проблема.

С сайта MariaDB , рекомендуется исправить

  1. Переключитесь на использование драйвера mysqlnd в PHP (рекомендуемое решение).
  2. Запустить с более низким уровнем сообщения об ошибках:

    $err_level = error_reporting(0);  
    $conn = mysql_connect('params');  
    error_reporting($err_level); 
    
  3. Перекомпилируйте PHP с помощью клиентских библиотек MariaDB.
  4. Используйте свою оригинальную клиентскую библиотеку MySQL с MariaDB.

Моя проблема исправлена ​​с помощью драйвера mysqlnd в Ubuntu:

Sudo apt-get install php5-mysqlnd

Ура!


[обновление: дополнительная информация] Установка этого драйвера также решает проблему 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);
122
ken

Для нового семейства MySQL 5.6 вам нужно установить php5-mysqlnd, а не php5-mysql.

Удалить эту версию драйвера MySQL

Sudo apt-get remove php5-mysql

И установите это вместо

Sudo apt-get install php5-mysqlnd
66
Carlos Buenosvinos Zamora

То же самое работает для MySQL:

Sudo apt-get install php5-mysqlnd

Я читал эту ветку, пытаясь найти решение для MySQL, и я также видел ответ Кена, но я проигнорировал решение для MariaDB, тратя таким образом несколько часов. Мне не было ясно, что то же самое может относиться к MySQL. Этот пост просто избавит вас от нескольких часов, которые я потерял.

23
marek

Основная причина этой ошибки заключается в том, что PHP некоторое время назад отделился от клиентских библиотек MySQL. Итак, что происходит (в основном на старых компиляторах linux), это то, что люди будут компилировать PHP против данной сборки MySQL Client (то есть версия установленного MySQL не имеет значения), а не обновлять (в CentOS пакет указан как mysqlclientXX, где XX представляет номер пакета). Это также позволяет сопровождающему пакета поддерживать более низкие версии MySQL. Это грязный способ сделать это, но это был единственный способ, учитывая, как PHP и MySQL используют разные лицензии.

MySQLND решает проблему, используя собственный собственный драйвер PHP (ND), который больше не зависит от MySQL Client. Он также скомпилирован для используемой версии PHP. Это лучшее решение, если по какой-либо другой причине MySQLND не поддерживает PHP связь с MySQL.

Если вы не можете установить MySQLND, вы можете спокойно проигнорировать эту ошибку по большей части. Это всего лишь уведомление о вашем финансовом положении, чем что-либо еще. Это просто звучит страшно.

10
Machavity

Чтобы скомпилировать php из исходного кода с MySQL native driver (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.

2
Sithsu

Я получил то же php вражду на моем сайте WordPress 

Ошибка: Предупреждение: mysql_connect (): Несоответствие версий заголовков и вспомогательных версий клиентской библиотеки. Заголовки: 50547 Библиотека: 50628 в /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php в строке 1515

Причина: я обновил версию 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

1
OpenWebWar
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
1
Dot Online Services

Если бы у вас был доступ к cpanel или whm для доменного хостинга ...

В cPanel перейдите на вкладку «Программное обеспечение и службы», >> и затем нажмите «Выбрать PHP версию» >>, установите желаемую версию php ...

 Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50628 in chennaitechnologies.com

Например .. Текущая версия PHP: 

Версия PHP [5.2] (список доступных версий php 5.2, 5.3, 5.4, 5.5, 5.6)

Предупреждение: изменение модулей php и параметров php с помощью PHP селектора для собственной версии php невозможно

Я выбрал версию 5.6 php, после того, как эта ошибка была устранена на моем блог-сайте WordPress ...

1
OpenWebWar

У меня возникают эти проблемы при использовании Percona/MySQL 5.6, когда драйвер php был скомпилирован с 5.5, а для некоторых приложений требуется php5-mysql, поэтому я пишу скрипт для перестройки драйверов.

https://github.com/falcacibar/php5-mysql-rebuild

0
Felipe Buccioni

Для WHM и cPanel в некоторых версиях нужно явно установить mysqli для сборки.

Используя WHM под CENTOS 6.9 xen pv [dc] v68.0.27, нужно было пересобрать Apache/PHP, посмотрев все опции и выбрав mysqli для сборки. По умолчанию было построено устаревшее mysql. Теперь сообщения об устаревании пропали, и один готов к будущим обновлениям MySQL.

0
Bob P

Изменение версии PHP с 5.6 на 5.5 Исправлено

Вам нужно перейти в панель управления> CGI Script и изменить там версию PHP.

0
Hammad Khan