it-swarm.com.de

Nicht übereinstimmende Kopf- und Clientbibliotheksversion

In PHP wird die folgende Warnung angezeigt, wenn ich versuche, eine Verbindung zu einer Datenbank herzustellen (über mysql_connect).

Warnung: mysql_connect (): Ungültige Version der Header-Version und der Nebenversion der Client-Bibliothek. Header: 50162 Library: 50524

In meiner php -i-Ausgabe habe ich die folgenden Werte unter mysqli aufgelistet

Client-API-Bibliotheksversion => 5.5.24

Version des Client-API-Headers => 5.1.62

Ich habe versucht, php5-mysql und php zu aktualisieren, aber ich habe bereits die neueste Version von beiden. Wie gehe ich vor, um die Header-Version zu aktualisieren, damit ich diese Warnung nicht mehr sehe?

EDIT

Meine MySQL-Dateien sollten alle auf die neueste Version aktualisiert werden:

$ 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.

Alte Versionen entfernen

$ 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

Ihr PHP wurde mit MySQL 5.1 kompiliert, jetzt verbindet es jedoch eine MySQL-Bibliothek der 5.5.X-Familie ..__ Sie müssen PHP auf eine mit MySQL 5.5 kompilierte Version aktualisieren oder die MySQL-Client-Bibliotheken zurücksetzen bis 5.1.x.

30
dAm2K

Ich verwende MariaDB und habe das ähnliche Problem.

Von MariaDB-Site wird empfohlen, das Problem zu beheben

  1. Wechseln Sie zur Verwendung des mysqlnd-Treibers in PHP (Empfohlene Lösung).
  2. Führen Sie eine niedrigere Fehlerberichtsebene aus:

    $err_level = error_reporting(0);  
    $conn = mysql_connect('params');  
    error_reporting($err_level); 
    
  3. Rekompilieren Sie PHP mit den MariaDB-Clientbibliotheken.
  4. Verwenden Sie Ihre ursprüngliche MySQL-Client-Bibliothek mit der MariaDB.

Mein Problem wurde behoben, indem der mysqlnd-Treiber in Ubuntu verwendet wurde:

Sudo apt-get install php5-mysqlnd

Prost!


[Update: Zusätzliche Informationen] Durch die Installation dieses Treibers wird auch das PDO-Problem gelöst, das den ganzzahligen Wert als String zurückgibt. Um den Typ nach der Installation von mysqlInd als Ganzzahl zu erhalten, führen Sie dies aus

$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

Für die neue MySQL 5.6-Familie müssen Sie php5-mysqlnd und nicht php5-mysql installieren.

Entfernen Sie diese Version des MySQL-Treibers

Sudo apt-get remove php5-mysql

Und stattdessen diese installieren

Sudo apt-get install php5-mysqlnd

Das gleiche funktioniert für MySQL:

Sudo apt-get install php5-mysqlnd

Ich habe diesen Thread gelesen, als ich versuchte, die Lösung für MySQL zu finden, und ich habe auch die Antwort von Ken gesehen, aber ich habe die Lösung für MariaDB ignoriert und einige Stunden damit verschwendet. Es war mir nicht klar, dass dasselbe auch für MySQL gelten könnte. Dieser Beitrag soll Ihnen nur die wenigen Stunden ersparen, die ich verloren habe.

23
marek

Der Hauptgrund für diesen Fehler ist, dass sich PHP vor einiger Zeit von den MySQL Client-Bibliotheken getrennt hat. Was also passiert (hauptsächlich bei älteren Compilieren von Linux) ist, dass die Leute PHP gegen einen bestimmten Build des MySQL-Clients kompilieren (was bedeutet, dass die installierte MySQL-Version irrelevant ist) und kein Upgrade (in CentOS dies Das Paket wird als mysqlclientXX aufgelistet, wobei XX die Paketnummer darstellt. Dadurch kann der Paketbetreuer auch niedrigere Versionen von MySQL unterstützen. Dies ist ein unordentlicher Weg, aber es war der einzige Weg, wie PHP und MySQL unterschiedliche Lizenzen verwenden.

MySQLND löst das Problem durch den nativen Treiber von PHP (ND), der nicht mehr auf MySQL Client angewiesen ist. Es wurde auch für die Version von PHP kompiliert, die Sie verwenden. Dies ist eine rundum bessere Lösung, wenn MySQLND aus keinem anderen Grund veranlasst wird, PHP mit MySQL zu sprechen.

Wenn Sie MySQLND nicht installieren können, können Sie diesen Fehler weitgehend sicher ignorieren. Es ist nur mehr ein Hinweis auf die EJP als alles andere. Es klingt einfach unheimlich.

10
Machavity

So kompilieren Sie php aus der Quelle mit MySQL-Treiber (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

Von /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

Eine oder mehrere PHP MySQL-Erweiterungen können mit diesen Optionen eingefügt werden.
Wenn ein Wert nicht an diese Optionen übergeben wird oder wenn der Wert mysqlnd ist, wird der native MySQL-Treiber verwendet.

2
Sithsu

Ich habe in meiner WordPress-Site die gleiche PHP-Kriege bekommen ... 

Err: Warning: mysql_connect (): Nicht übereinstimmende Kopfversionen und Unterversionen der Clientbibliothek. Header: 50547 Library: 50628 in /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php in Zeile 1515

Ursache: Ich habe WP 4.2 auf Version 4.5 aktualisiert (PHP und MySql stimmen nicht überein)

Ich habe wp-db.php in Zeile 1515 geändert

$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );

zu 

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 );
}

Es ist ohne kriegerische Fehler auf meiner Wordpress-Site

1
OpenWebWar
Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026

Ich habe den obigen Fehler behoben, indem ich einfach meinen Apache neu aufgebaut habe:

cPanel Version  56.0 (build 25)
Apache Version  2.4.18
PHP Version 5.5.30
MySQL Version   10.0.26-MariaDB
1

Wenn Sie Zugriff auf Cpanel oder Whm für Domain-Webhosting hatten ...

Gehen Sie in cPanel zur Registerkarte "Software und Dienste", >> und klicken Sie dann auf "Auswählen PHP Version". >> Legen Sie die gewünschte Version von PHP fest.

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

ZB . Aktuelle PHP Version: 

PHP-Version [5.2] (Liste der verfügbaren PHP-Versionen 5.2, 5.3, 5.4, 5.5, 5.6)

Warnung: Ändern von PHP-Modulen und PHP-Optionen über PHP Selector für native PHP-Version ist nicht möglich

Ich habe die Version 5.6 PHP ausgewählt, nachdem dieser Fehler auf meiner WordPress-Blog-Site behoben wurde ...

1
OpenWebWar

Ich habe diese Probleme, wenn Percona/MySQL 5.6 verwendet wird und der PHP-Treiber mit 5.5 kompiliert wurde und für einige Apps php5-mysql erforderlich ist. Daher schreibe ich ein Skript, um die Treiber neu zu erstellen.

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

0
Felipe Buccioni

Für WHM und cPanel müssen einige Versionen von mysqli explizit für die Erstellung festgelegt werden.

Unter Verwendung von WHM unter CENTOS 6.9 xen pv [dc] v68.0.27 musste Apache/PHP neu erstellt werden, indem alle Optionen betrachtet und das zu erstellende mysqli ausgewählt wurde. Standardmäßig wurde das veraltete MySQL erstellt. Nun sind die Abschreibungsnachrichten weg und eine ist bereit für zukünftige MySQL-Upgrades.

0
Bob P

Änderung der PHP -Version von 5.6 auf 5.5. Problem behoben

Sie müssen zum Control Panel> CGI Script gehen und dort die Version von PHP ändern.

0
Hammad Khan