ホームページ  >  記事  >  バックエンド開発  >  PHPの非互換性の問題を解決する方法

PHPの非互換性の問題を解決する方法

藏色散人
藏色散人オリジナル
2021-02-07 09:29:032892ブラウズ

PHP 非互換性の解決策: 1. 「my.cnf」を変更して文字セットを指定します; 2. 「alter user 'root'@'%'identified with...」アカウントを通じて既存の文字セットを更新します。パスワード; 3. Mysql8.0 を再インストールします。

PHPの非互換性の問題を解決する方法

この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター。

PHP と Mysql8 間の非互換性問題の概要

Mysql8.0 をインストールした後、元の PHP と連携する必要がありますが、元々は動作可能でした。 Mysql5.1 ではうまく動作していたコードが突然エラーを報告し、追加の作業を行う必要があるようです。

报错:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

ネット情報によると、Mysql8.0ではデフォルトの文字セットがutfmb4に変更されたため、PHPに限らずクライアントとの通信が認識できなくなったため、文字を指定するにはmy.cnfを変更する必要があります。セット。

[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]

オンライン情報によると、これはユーザー ID 認証の暗号化方式の非互換性が原因であるとのことです。mysql8.0 のデフォルト方式は caching_sha2_password であり、これにより古いバージョンとの互換性の問題が発生します。古いバージョンは mysql_native_password です。

推奨: 「PHP ビデオ チュートリアル

設定する暗号化方式を指定できます:

# 新建用户,使用旧版加密方式设置密码
CREATE USER username@localhost identified with mysql_native_password by 'password';
# 更新已存在的账号密码加密方式
alter user 'root'@'%' identified with mysql_native_password by 'password';

ただし、より良い方法は、行を追加することです。デフォルト設定の :

[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)

他のユーザーに権限を追加すると、権限がないというエラーが表示されました。その理由は、誤って root ユーザーを削除したためです。この問題を解決するためのドキュメントはインターネット上にたくさんありますが、 、再構築後 root ユーザーに Grant_priv: Y があるにもかかわらず、権限を正常に割り当てることができず、頭が痛くなります。

解決策: 再インストールします。記事を参照して Mysql8.0 をインストールします。

まとめ

mysql8.0 の新機能は何ですか? ドキュメントを詳しく確認したわけではありませんが、最初は互換性に苦労しましたが、幸いにも問題は解決しました。これら 3 つの質問の後、PHP プログラムは正常に実行されました。これから PHP5.1 を PHP7 にアップグレードします。

以上がPHPの非互換性の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。