Heim > Artikel > Backend-Entwicklung > So lösen Sie das PHP-Inkompatibilitätsproblem
Lösungen für PHP-Inkompatibilität: 1. Ändern Sie „my.cnf“, um den Zeichensatz anzugeben. 2. Aktualisieren Sie das vorhandene Kontokennwort über „Benutzer ‚root‘@‘%‘ identifiziert mit …“; MySQL8.0.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP Version 7.1, DELL G3-Computer.
Zusammenfassung der Inkompatibilitätsprobleme zwischen PHP und Mysql8
Nach der Installation von Mysql8.0 müssen wir mit unserem ursprünglichen PHP zusammenarbeiten. Der Code, der ursprünglich gut mit Mysql5.1 funktionierte, meldete jedoch plötzlich einen Fehler Es ist notwendig, etwas zusätzliche Arbeit zu leisten.
报错:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers
Laut Online-Informationen hat Mysql8.0 den Standardzeichensatz auf utfmb4 geändert, sodass die Kommunikation mit dem Client (nicht nur PHP) nicht erkannt werden kann. Wir müssen my.cnf ändern, um den Zeichensatz anzugeben.
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8 报错:PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]
Laut Online-Informationen liegt dies an der Inkompatibilität der Verschlüsselungsmethode für die Benutzeridentitätsauthentifizierung. Die Standardmethode in mysql8.0 ist caching_sha2_password, was zu Kompatibilitätsproblemen mit älteren Versionen führt .
Empfohlen: „PHP-Video-Tutorial“
Wir können die festzulegende Verschlüsselungsmethode angeben:
# 新建用户,使用旧版加密方式设置密码 CREATE USER username@localhost identified with mysql_native_password by 'password'; # 更新已存在的账号密码加密方式 alter user 'root'@'%' identified with mysql_native_password by 'password';
Aber eine bessere Möglichkeit besteht darin, eine Zeile mit der Standardkonfiguration hinzuzufügen:
[mysqld] default_authentication_plugin = mysql_native_password 报错:Access denied for user 'root'@'localhost' (using password: YES) mysql> GRANT ALL PRIVILEGES ON *.* TO 'oss'@'%'; ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Wenn ich anderen Benutzern Berechtigungen hinzufüge, nein Es wird ein Fehler gemeldet. Der Grund dafür ist, dass ich den Root-Benutzer versehentlich gelöscht habe, um dieses Problem zu lösen. Obwohl der Root-Benutzer, den ich wiederhergestellt habe, Grant_priv: Y hat, kann er immer noch keine Berechtigungen zuweisen. was mir Kopfschmerzen bereitet.
Lösung: Neu installieren, siehe Artikel zur Installation von Mysql8.0.
Zusammenfassung
Was sind die neuen Funktionen von mysql8.0? Ich habe die Dokumentation nicht im Detail überprüft, aber die Kompatibilität ließ mich zuerst leiden, nachdem ich diese drei Probleme gelöst hatte Ich bin fertig, ich werde PHP5.1 auf PHP7 aktualisieren.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das PHP-Inkompatibilitätsproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!