In PHP erhalte ich die folgende Warnung, wenn ich versuche, eine Verbindung zu einer Datenbank herzustellen (via mysql_connect
)
Warnung: mysql_connect (): Nicht übereinstimmende Header und Clientbibliothek stimmen nicht überein. Header: 50162 Bibliothek: 50524
In meiner php -i
Ausgabe sind die folgenden Werte unter mysqli aufgeführt
Version der Client-API-Bibliothek => 5.5.24
Client-API-Header-Version => 5.1.62
Ich habe versucht, php5-mysql und php zu aktualisieren, aber ich bin bereits auf der neuesten Version von beiden. Wie aktualisiere ich die Header-Version, damit diese Warnung nicht mehr angezeigt wird?
BEARBEITEN
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
Antworten:
Ihr PHP wurde mit MySQL 5.1 kompiliert, aber jetzt verbindet es eine MySQL-Bibliothek der 5.5.X-Familie. Sie müssen PHP auf eine mit MySQL 5.5 kompilierte Version aktualisieren oder MySQL-Client-Bibliotheken auf 5.1.x zurücksetzen.
quelle
Ich benutze MariaDB und habe das ähnliche Problem.
Von der MariaDB-Site wird empfohlen, das Problem durch zu beheben
Führen Sie mit einer niedrigeren Fehlerberichterstattungsstufe aus:
Mein Problem wurde mithilfe des mysqlnd-Treibers in Ubuntu behoben:
Prost!
[Update: Zusätzliche Informationen] Durch die Installation dieses Treibers wird auch das PDO-Problem behoben, bei dem ein ganzzahliger Wert als Zeichenfolge zurückgegeben wird. Führen Sie dies nach der Installation von mysqlInd aus, um den Typ als Ganzzahl beizubehalten
quelle
Für die neue MySQL 5.6-Familie müssen Sie php5-mysqlnd installieren, nicht php5-mysql.
Entfernen Sie diese Version des MySQL-Treibers
Und installieren Sie dies stattdessen
quelle
Das gleiche funktioniert für MySQL:
Ich habe diesen Thread gelesen, um die Lösung für MySQL zu finden, und ich habe auch Ken's Antwort gesehen, aber ich habe die Lösung für MariaDB ignoriert und ein paar Stunden auf diese Weise verschwendet. Mir war nicht klar, dass dies auch für MySQL gelten könnte. Dieser Beitrag soll Ihnen nur die wenigen Stunden ersparen, die ich verloren habe.
quelle
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 Linux-Kompilierungen), ist, dass Benutzer PHP gegen einen bestimmten Build des MySQL-Clients kompilieren (was bedeutet, dass die installierte Version von MySQL irrelevant ist) und nicht aktualisieren (in CentOS wird dieses Paket als aufgeführt
mysqlclientXX
, wobei dasXX
dargestellt wird Paketnummer). Dadurch kann der Paketbetreuer auch niedrigere Versionen von MySQL unterstützen. Es ist ein chaotischer Weg, dies zu tun, aber es war der einzige Weg, wenn man bedenkt, wie PHP und MySQL unterschiedliche Lizenzen verwenden.Mysqlnd löst das Problem durch PHP eigene nativen Treiber (die ND) verwendet wird , die nicht verläßt sich mehr auf MySQL - Client. Es wurde auch für die von Ihnen verwendete PHP-Version kompiliert. Dies ist eine rundum bessere Lösung, wenn MySQLND aus keinem anderen Grund dafür ausgelegt ist, dass PHP mit MySQL spricht.
Wenn Sie MySQLND nicht installieren können, können Sie diesen Fehler zum größten Teil sicher ignorieren. Es ist nur mehr eine FYI-Mitteilung als alles andere. Es klingt nur beängstigend.
quelle
Um PHP aus dem Quellcode mit dem nativen MySQL-Treiber (mysqlnd) zu kompilieren ,
Von
/php/source/path/configure --help
.Mithilfe dieser Optionen können eine oder mehrere PHP-MySQL-Erweiterungen hinzugefügt werden.
Wenn ein Wert nicht an diese Optionen übergeben wird oder wenn der Wert lautet
mysqlnd
, wird der native MySQL-Treiber verwendet.quelle
--with-mysql
und--with-mysqli
Optionen verwenden musste, um den kompilierten Treiber richtig zu verwenden. Also habe ich diesmal meinen Konfigurationsbefehl erneut ausgeführt mit: `--with-mysql = / home / stephane / programme / mariadb / install \ --with-mysqli = / home / stephane / programme / mariadb / install / bin / mysql_config` und das Problem wurde gelöst. Es wird jetzt die richtige MariaDB-Client-Version verwendet.Ich habe den gleichen PHP-Krieg auf meiner WordPress-Seite ...
Ursache: Ich habe die Version wp 4.2 auf 4.5 aktualisiert (PHP und MySql stimmen nicht überein).
Ich habe wp-db.php in Zeile 1515 geändert
zu
Es ist ohne kriegerischen Fehler auf meiner WordPress-Seite
quelle
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 "PHP-Version auswählen" >> stellen Sie die gewünschte Version von PHP ein ...
Z.B. Aktuelle PHP-Version:
PHP-Version [5.2] (Liste der verfügbaren PHP-Versionen 5.2, 5.3, 5.4, 5.5, 5.6)
Warnung: Das Ändern von PHP-Modulen und PHP-Optionen über PHP Selector für die native PHP-Version ist nicht möglich
Ich habe die PHP-Version 5.6 ausgewählt, nachdem dieser Fehler auf meiner WordPress-Blog-Site behoben wurde ...
quelle
Ich habe den obigen Fehler behoben, indem ich meinen Apache neu erstellt habe:
quelle
Ich habe diese Probleme, wenn ich Percona / MySQL 5.6 verwende 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
quelle
Für WHM und cPanel müssen einige Versionen explizit festlegen, dass mysqli erstellt wird.
Unter Verwendung von WHM musste unter CENTOS 6.9 xen pv [dc] v68.0.27 Apache / PHP neu erstellt werden, indem alle Optionen überprüft und mysqli zum Erstellen ausgewählt wurden. Standardmäßig wurde das veraltete MySQL erstellt. Jetzt sind die Abschreibungsmeldungen verschwunden und eine ist bereit für zukünftige MySQL-Upgrades.
quelle
Ich bin auf centos7 auf dasselbe Problem gestoßen. Das Entfernen von php-mysql und das Installieren von php-mysqlnd haben das Problem behoben. Vielen Dank an Carlos Buenosvinos Zamora für Ihren Vorschlag.
Hier sind meine Befehle für centos7, nur für den Fall, dass dies für jedermann hilfreich sein kann, da die meisten Antworten hier auf Debian / Ubuntu basieren.
So finden Sie das installierte PHP-MySQL-Paket
So entfernen Sie das installierte PHP-MySQL-Paket
So installieren Sie php-mysqlnd
quelle
Das Ändern der PHP-Version von 5.6 auf 5.5 wurde behoben .
Sie müssen zu Systemsteuerung> CGI-Skript gehen und dort die PHP-Version ändern.
quelle