PHP 7.2.8・7.2.9 で WordPress など MySQL 8.0 に接続する PHP が動作しなくなる件の対策法


PHP 7.2.8 or 7.2.9 にアップデート後、WordPress で運営しているこのブログが表示されなくなる問題で大変ご迷惑をおかけいたしました。

現象

PHP 7.2.7 から、PHP 7.2.8 にアップデートすると、WordPress のサイトがエラーとなりました。

WordPress を使用しないページや、phpinfo などは正常に動作しました。

ログの保存方法の設定かもしれませんが、下記のログしか残っていませんでした。

2018/08/17 23:04:41 [error] 1239#1239: *154 upstream timed out (110: Connection timed out) while reading response header from upstream

PHP 7.2.8 リリース時は、yum downgrade で PHP 7.2.7 にロールバックして回避していました。

# yum downgrade php-7.2.7 php-cli-7.2.7 php-common-7.2.7 php-json-7.2.7 php-process-7.2.7 php-fpm-7.2.7 php-intl-7.2.7

ただ、リポジトリは最新版とその一つ前しか保管していないため、PHP 7.2.9 に更新後は、二つ前の 7.2.7 へはダウングレードできなくなりました。

対策法

下記のバグが上がっていました。

PHP 7.2.8、7.2.9 と MySQL 8.0.12 を利用していたので、バージョンは一致しています。

同様の報告が少なかったのも、一般的なブログ運営者は、ディストリビューションのリポジトリの PHP、MariaDB を使用しているためなのかもしれませんね。

そのページに書かれている下記の操作を行いました。

# vim /etc/my.cnf
---
default-authentication-plugin=mysql_native_password

MySQL をリスタート

# systemctl restart mysqld

これでブログが無事表示されるようになりました。

default-authentication-plugin について

問題になっていた default-authentication-plugin ですが、MySQL 8 では、従来の mysql_native_password に代わり caching_sha2_password がデフォルトになったようです。

7.2.8 で PHP の MySQL に関するコードが変更になったようで、そこで不具合が発生しているようです。


Comments

comments

コメントを残す

メールアドレスが公開されることはありません。

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)