はじめに
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のバージョンアップは比較的簡単です。新しいバージョンにすればセキュリティリスクを低減させ、処理速度の向上が望めます。特別な事情がなければ、積極的にアップグレードしましょう!