PHP7.4以上でデータベース接続確立エラーになるときの対処法

Contents
PHPのバージョンをアップデートしていなかったWordPress制作サイトで、こんな表示が出ていたのでPHPをアップデートすることに。
PHP7.4以上にアップデートすればOKとのことですが、サーバーで確認すると、最新の推奨バージョンがPHP8.1.22なので、PHP8.1.22にします。
切り替えてみると・・・データベース接続確立エラーに。
これ実はPHP7.4以上のバージョンだとどのバージョンを選んでも同じエラーがでます。
データベース接続確立エラーについて
データベース接続確立エラーは、wp-config.phpファイルに書かれているユーザー名、パスワードが間違っていてデータベースサーバーに接続できない、もしくは何らかの理由でデータベースサーバーに接続できないということになるので、データベースサーバーがダウンしているなど、なんらかの理由があるはずです。
対処法を考察
今回の場合はパスワードが一致していない可能性が高いと考え、パスワードを変更してみたところ、問題解決。
PHP8.1.22にアップデートしてもエラーは出なくなりました。
実際はこちらではパスワードを何も触った記憶がないので、こちらの設定ミスではなくデータベース側の仕様変更の可能性が極めて高いと考えたわけです。
原因はMySQLの暗号化方式が変更になったから
エラーの原因は簡単に説明すると、PHPのバージョンによって、暗号化の方式が違うから。
PHP7.4から暗号化の方式が変わっていたようです。
ですので、サーバーのコントロールパネルでパスワードを変更した結果、新しい暗号化方式に書き換えられてエラーが消えたという感じです。
今回は今までとは違うパスワードにしてテストしてみたのですが、パスワードの設定のし直しで解決できるのであれば、前回と同じパスワードでもエラーは解決できることになります。
パスワードを変更したのにエラーが出る場合は
人によっては、パスワードを設定し直したのにまだエラーのままという場合も存在するみたいです。
弊社の場合は、そのような状態のWordPressサイトがなかったので、テストできなかったのですが、この場合データーベースを新しいバージョンに移行することで解決できるそうです。
この時点では、MySQL5.5からMySQL5.7へ移行ということになります。
これはバージョンの問題とのことですが、私はテストできていませんので自己責任で試してみてください。
同時に別のエラーが出る場合も
というわけで、弊社で運営しているWordPressサイトのPHPをどんどん推奨バージョンに変更していったところ、データベース接続確立エラーではなく別のエラー(Fatal error)になるサイトも出てきました。
原因は、「テーマ」だったので、エラーになっている部分のコードを書き直して修正したのですが、こんな感じでPHPのバージョンを変更すると、別のエラーが出ることがあります。
そんなときは慌てずに、まずはエラーを確認してみましょう。
プラグインなら1つずつ無効化していけば分かりますし、テーマに問題があるのであれば、別のテーマを適応してみたり、PHPのバージョンも色々なバージョンに変更して、どのバージョンではダメでどのバージョンでは問題ないのか境目を確認してみると対処しやすいと思います。
データベースユーザーのパスワード設定方法
今回、サーバー環境はエックスサーバーです。
データベースユーザーのパスワードを再設定する
以前のパスワードを忘れてしまったというかたは、wp-config.phpで確認できます。
パスワードが分かったら、コントロールパネルで「MySQL設定」⇒「MySQLユーザー一覧」に進みます。
変更したいMySQLユーザーの「変更」からパスワードを再設定し「確認画面へ進む」⇒「変更する」をクリックします。
これで再設定完了です。
別のパスワードにした場合は、wp-config.phpのパスワードも書き換えてFTPクライアントソフトなどで上書きしてください。
PHPのバージョン変更方法
「PHP Ver.切替」から変更後のバージョンを選んで「変更」をクリックでOKです。
まとめ
PHP7.4以上にして、データベース接続確立エラーになったら、データベースユーザーのパスワードの再設定を行う。
これで解決できると思います。