WordPressのダッシュボードから「サイトが安全ではないバージョンの PHP を実行していることを検出しました。」、「PHPの更新が必要です」と通知があったので、PHPのバージョンを7.0から7.3に更新しました。今回はその問題の内容と対処方法について説明します。
WordPress(ダッシュボード)からの通知内容

「サイトが安全ではないバージョンの PHP を実行していることを検出しました。」とのこと。スマブロ@KENの使用しているPHPのバージョンは7.0ですが、PHP7.0は2018年でサポートが終了していました。WordPressの推奨バージョンはPHP7.4(2020年6月時点)です。

原因とその対処方法について
PHP7.4は2020年にリリースされていますが、リリースされて日がまだ浅いため、使用しているテーマやプラグインがPHP7.4に対応しているか確認しておく必要があります。今回はPHPのバージョン互換性をチェックするプラグイン「PHP Compatibility Checker」を使用して確認しました。

「PHP Compatibility Checker」ではPHP7.3までしかチェックできませんでした。有効化中のプラグインはテーマはPHP7.3に対応しているため、様子を見て2019年にリリースされたPHP7.3にアップデートしたいと思います。
それでは以下にてPHP7.0を7.3にアップデートする手順を説明します。
PHP7.3のインストール方法
スマブロ@KENは仮想サーバにWordPressをインストールしてブログを運営しています。仮想サーバのソフトウェアは全て自前でメンテナンスしているので、PHPのアップデートは自身で行います。
前提の環境
アップデートにおける前提の環境は以下のとおりです。
- OS Ubuntu 16.04 LTS
- PHP7.0がインストール済み
リポジトリを追加するツールをインストールする
仮想サーバにログインしてリポジトリを追加するコマンドを実行します。
$ sudo apt-get install software-properties-common
リポジトリを追加する
PHPをインストールするための外部リポジトリをシステムに追加します。
$ sudo add-apt-repository ppa:ondrej/php
リポジトリを最新にする
外部リポジトリを追加したので、最新に更新します。
$ sudo apt update
PHP7.3のパッケージ情報を確認する
追加したリポジトリにPHP7.3パッケージが追加されているか確認します。
$ sudo apt show php7.3
Package: php7.3
Version: 7.3.19-1+ubuntu16.04.1+deb.sury.org+1
Priority: optional
Section: php
Maintainer: Debian PHP Maintainers <team+pkg-php@tracker.debian.org>
Installed-Size: 79.9 kB
Provides: php
Depends: libapache2-mod-php7.3 | php7.3-fpm | php7.3-cgi, php7.3-common
PHP7.3の関連モジュールを確認する
PHP7.0の関連モジュールを確認して必要なPHP7.3モジュールを特定します。
$ sudo dpkg -l |grep php7.0
PHP7.3関連モジュールをインストールする
以下コマンドにて、PHP7.0を参考にPHP7.3および関連モジュールをインストールします。
$ sudo apt install php7.3 php7.3-fpm php7.3-mysql php7.3-mbstring php7.3-curl php7.3-gd php7.3-xml php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline php7.3-zip
www.confの変更を確認する
PHP7.3および関連モジュールをインストールすると、PHP7.0で使用していたコンフィグファイル(www.conf)の変更を行うか、対話形式で問われるので、「N」(=変更しない)を選択します。
Configuration file '/etc/php/7.0/fpm/pool.d/www.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** www.conf (Y/I/N/O/D/Z) [default=N] ?
PHPのバージョンを確認する
以下コメンドでインストールされたPHPのバージョンを確認します。
$ php -v
PHP7.3と表示されればOKです。
PHP 7.3.19-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jun 12 2020 07:48:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.19-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
PHPの切り替え
PHP7.3をインストールした時点で自動でPHP7.0から7.3に切り替わります。もし7.0に戻す必要がある場合は以下コマンドを実行します。
・PHPのリストを確認する
$ update-alternatives --list php
/usr/bin/php7.0
/usr/bin/php7.3
$ update-alternatives --display php
php - auto mode
link best version is /usr/bin/php7.3
link currently points to /usr/bin/php7.3
link php is /usr/bin/php
・PHPの切り替え
$ update-alternatives --set php /usr/bin/php7.0
PHPコマンドの実体は、/usr/bin/php
です。さらにこの実体は/etc/alternatives/php
へのシンボリックリンクとなっており、さらに/etc/alternatives/phpがPHP7.0または7.3の
へのシンボリックリンクとなっています。/etc/alternatives/php
へのシンボリックリンクを切り替えることでPHPのバージョンを切り替える仕組みとなっています。
PHPのコンフィグ設定
実行ユーザの設定
デフォルトではWebサーバの実行ユーザ/グループはApache仕様となっています。スマブロ@KENはWebサーバにnginxを使用しているため、実行ユーザを変更します。
$ sudo vi /etc/php/7.3/fpm/pool.d/www.conf
;user = www-data
;group = www-data
user = nginx ←実行ユーザを/etc/nginx/nginx.confのuserに合わせる
group = nginx ←実行ユーザを/etc/nginx/nginx.confのuserに合わせる
・ソケットowner/grpupをnginxにする
;listen.owner = www-data
;listen.group = www-data
listen.owner = nginx ←ソケットユーザを/etc/nginx/nginx.confのuserに合わせる
listen.group = nginx ←ソケットユーザを/etc/nginx/nginx.confのuserに合わせる
・FPMが実行するPHP拡張子の制限する
security.limit_extensions = .php .php3 .php4 .php5 .php7
PHP7.0を停止させて、PHP7.3を再起動する
$ sudo service php7.0-fpm stop
$ sudo service php7.3-fpm stop
$ sudo service php7.3-fpm start
これで準備完了です。今まで通り動作しているか、サイトやWordPressをテストします。
まとめ
2 Ubuntu 16.04 LTSのデフォルトPHP7.0バージョンは2018年にサポート終了している
3 今回の対処はリリース後に1年経過しているPHP7.3をインストールした
4 PHP7.3にアップデートすることで「PHPの更新が必要です」は解消した