概要
- WordPressがPHP7.4以上を推奨とのことで、PHP7.4をインストールしたのに、
ls -l php*
で確認しても、ApacheがロードするPHPバージョンが7.2だけで、7.4が出てきませんでした。今回そのエラー対応をしたので、解決手順を残します。 - また、上記解決後にWordpressで
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
というエラーが表示されたのでその対処法も記します。
解決手順
- まず、パッケージマネージャーを最新に更新します。
$ sudo apt-get update
- PHP 7.4をインストールするために必要なパッケージをインストールします。
$ sudo apt-get install php7.4
、Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package php7.4
E: Couldn't find any package by glob 'php7.4'
E: Couldn't find any package by regex 'php7.4
- あれ、なんかエラーメッセージが返ってきました。
E: Unable to locate package php7.4
ととあるので、パッケージリポジトリにPHP 7.4が含まれていないらしい。手動でリポジトリを追加してみます。 - apt-transport-httpsパッケージをインストールします。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- Ondrej PHPリポジトリを追加します。
- Ondrej PHPリポジトリとは:DebianおよびUbuntu LinuxディストリビューションのためのPHPの公式リポジトリの1つ。DebianやUbuntuなどには、標準でPHPのパッケージが含まれていますが、最新バージョンを簡単にインストールできること・セキュリティアップデートに迅速に対応していること・複数のPHPバージョンを提供していることなどの理由から、Ondřej PHP リポジトリを利用することが推奨されます。また、Linuxディストリビューションに含まれるPHPのバージョンだと古い場合があるらしい。
- PPAとは:Ubuntuやその他のDebian系Linuxディストリビューションで利用される、個人用パッケージアーカイブ(Personal Package Archive)の略称。ppa:ユーザー名/リポジトリ名という形式でアクセスします。
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
- 改めて、PHP 7.4をインストールします。
$ sudo apt-get install php7.4
- 今回はうまくいったようです。以下でApacheが見ているPHPバージョンを確認します。
- 以下でディレクトリで、Apacheサーバーで現在有効になっているモジュールのリスト(以下であればphp)を確認することができます。
- Apacheが起動するとき、
mods-enabled
ディレクトリ内のシンボリックリンクが読み込まれ、有効になったモジュールが自動的にロードされます。これにより、Apacheサーバーが必要に応じて拡張され、特定の機能を実行できるようになります。
$ cd /etc/apache2/mods-enabled/
$ ls -l php*
- しかし、上記実行してもまだ7.2になっています。PHP 7.2が既にインストールされており、ディストリビューションがデフォルトで使用するバージョンを変更しないためか、現在のバージョンが7.2のままっぽい。
- Apacheに対してPHP7.2を無効にし、7.4を有効にします。
$ sudo a2dismod php7.2
$ sudo a2enmod php7.4
$ sudo systemctl restart apache2
-
ls -l php*
コマンドを実行して、PHP 7.4が表示されるかどうかを確認します。今回は7.4を確認できました。 - よし、これでOK!と思い、Wordpress管理画面を開いたら、以下のメッセージが出てきました。
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
- WordPressがMySQL用のPHP拡張機能(extension)を検出できないよう。おそらく、7.2であれば検出できたのでしょうが、7.4にしたことでmissingになってしまったのでしょう。PHPのバージョンを変えるとこういったモジュール無効エラーがしばしば見られるので要注意です。
- 別記事でまとめたモジュールエラーはこちら:【Wordpress】一部ページが「重大なエラーが発生しました」&サイトヘルスで「1つ以上の必須モジュールが存在しません」が表示された場合
- PHP7.4指定でMySQL用拡張機能をインストールします。
$ sudo apt-get install php7.4-mysql
$ sudo systemctl restart apache2
- 無事に表示されました!!やったぁー!!