状況
ラズパイ + Apache2 で運営している本ブログで、適当に sudo apt update をかけて、PHP を 8.1 から 8.2 にアップデートしました。その後ブログにアクセスすると、「お使いのサーバーの php では wordpress に必要な mysql 拡張を利用できないようです」と表示されてしまいました。
試したけどダメだったこと
- mysqli がインストールされていないのでは?
- → sudo apt install php-mysql を実行し、php8.2-mysql がインストールされたことを確認した
- phpinfo の PDO drivers が no value になっているのでは?
- → php -i | grep mysql を行い PDO drivers => mysql と出てくることを確認した
- /etc/php/8.2/cli/php.iniの、;extension=mysqli のコメントアウトを解除したら?
- → 効果が無かった
原因と解決策
けっきょく非常に単純で、「Apache から実行される PHP のバージョンが、アップデート前のものだった」ことが原因でした。まず、Apache で現在有効になっているモジュールを a2dismod コマンドで表示します。
$ sudo a2dismod
Your choices are: access_compat alias auth_basic authn_core authn_file authz_core authz_host authz_user autoindex deflate dir env filter mime mpm_prefork negotiation php8.1 reqtimeout rewrite setenvif socache_shmcb ssl status wsgi
Which module(s) do you want to disable (wildcards ok)?
php8.1 が有効になっています。なので、Apache2 は PHP 8.1 の MySQL 拡張を実行しようとして、それがないから怒られたのです。実際に、phpinfo() を表示させてみると、PHP 8.1 が実行されていました。コマンドラインで php -v と打ってバージョンを確認したときは PHP 8.2 が出てきたのですが、Apache が実行する PHP は コマンドラインから実行される CLI 版とは異なるそうです。
というわけで、
$ sudo a2dismod php8.1
$ sudo a2enmod php8.2
$ sudo systemctl restart apache2
で解決しました。
ピンバック: お使いのサーバーの Php では Wordpress に必要な Mysql 拡張を利用できないようです。 ?