はじめに
WordPress5.2から、PHP5.6以下のバージョンで稼働する環境にPHPをアップグレードしたほうがよい旨のメッセージが表示されるようになりました。AmazonLinuxの場合、amzn-updatesリポジトリにphp73系のパッケージが標準で用意されています。
今回、既存のphp56からphp73へアップブレードする方法を紹介します。尚、WordPress稼働環境はAmazonEC2 AmazonLinux、Nginx、PHP-FPM(FastCGI)、MariaDBとします。詳しい構築手順はこちらの投稿を参照してください。今回紹介する手順はサービス停止が発生します。サービス停止が許容できない場合は、別途EC2インスタンスを用意(このEC2インスタンスのスナップショットを取得、スナップショットから別のEC2インスタンスとして起動する、など)して対応してください。
現状のphp56インストール状況を確認する
$ rpm -qa | grep php | sort
php56-5.6.40-1.142.amzn1.x86_64
php56-cli-5.6.40-1.142.amzn1.x86_64
php56-common-5.6.40-1.142.amzn1.x86_64
php56-fpm-5.6.40-1.142.amzn1.x86_64
php56-imap-5.6.40-1.142.amzn1.x86_64
php56-jsonc-1.3.10-1.20.amzn1.x86_64
php56-mbstring-5.6.40-1.142.amzn1.x86_64
php56-mcrypt-5.6.40-1.142.amzn1.x86_64
php56-mysqlnd-5.6.40-1.142.amzn1.x86_64
php56-opcache-5.6.40-1.142.amzn1.x86_64
php56-pdo-5.6.40-1.142.amzn1.x86_64
php56-process-5.6.40-1.142.amzn1.x86_64
php56-xml-5.6.40-1.142.amzn1.x86_64
インストール可能なphp73系パッケージを確認する
$ yum list | grep php73
php73.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-bcmath.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-cli.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-common.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-dba.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-dbg.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-devel.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-embedded.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-enchant.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-fpm.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-gd.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-gmp.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-imap.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-intl.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-json.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-ldap.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-mbstring.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-mysqlnd.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-odbc.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-opcache.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-pdo.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-pdo-dblib.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-pgsql.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-process.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-pspell.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-recode.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-snmp.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-soap.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-tidy.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-xml.x86_64 7.3.6-1.17.amzn1 amzn-updates
php73-xmlrpc.x86_64 7.3.6-1.17.amzn1 amzn-updates
既存のphp56系パッケージの設定を退避する
(php56 settings)
$ sudo cp /etc/php.ini /etc/php.ini.before-update-php56
(php-fpm56 settings)
$ sudo cp /etc/php-fpm-5.6.d/www.conf /etc/php-fpm-5.6.d__www.conf.before-update-php56
稼働中のPHP-FPMを停止する
$ sudo service php-fpm stop
既存のphp56系パッケージをアンインストールする
$ sudo yum remove php56*
php73系パッケージをインストールする
$ sudo yum install \
php73 php73-cli php73-common php73-fpm php73-imap php73-json \
php73-mbstring php73-mysqlnd php73-opcache php73-pdo \
php73-process php73-xml
php56の設定変更箇所をphp73に適用する
$ sudo cp /etc/php.ini /etc/php.ini.after-update-php56
(Apply settings from php56 (/etc/php.ini.before-update-php56))
$ sudo vi /etc/php.ini
$ sudo cp /etc/php-fpm-7.3.d/www.conf /etc/php-fpm-7.3.d/www.conf.org
(Apply settings from php56-fpm (/etc/php-fpm-5.6.d__www.conf.before-update-php56))
$ sudo vi /etc/php-fpm-7.3.d/www.conf
(reference)
$ diff /etc/php-fpm-7.3.d/www.conf.org /etc/php-fpm-7.3.d/www.conf
24c24
< user = apache
---
> user = nginx
26c26
< group = apache
---
> group = nginx
38c38
< listen = /var/run/php-fpm/www.sock
---
> listen = 127.0.0.1:9000
PHP-FPMを起動する
$ sudo service php-fpm start
おわりに
PHPのバージョンアップは比較的簡単です。新しいバージョンにすればセキュリティリスクを低減させ、処理速度の向上が望めます。特別な事情がなければ、積極的にアップグレードしましょう!