yumのremi-php70レポジトリでインストールしたPHP7.0系をPHP7.1にアップデートしてみます。
1.前提条件
今回の作業の前提条件は2つ。
1つは、yumのremi-php70レポジトリでPHP7.0にバージョンアップ済なこと。
もう1つは、WordPressを利用する場合はPHP7.1対応のWordPress4.7以上であること。v4.6以前の場合、動作に異常はないはずですがPHPエラーが発生します。
2.レポジトリ確認
PHP7.1をインストール可能なremiのレポジトリファイルはremi-php71.repoですが、私がremiレポジトリを導入したのはPHP7.1のベータ版が公開される前だったので入っていません。
# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Vault.repo remi-php70.repo CentOS-CR.repo epel.repo CentOS-Debuginfo.repo epel-testing.repo remi.repo CentOS-fasttrack.repo mysql-community.repo remi-safe.repo CentOS-Media.repo mysql-community-source.repo
remiレポジトリの再インストールでもいいのですが、remi-php70.repoをベースにPHP7.1用に参照先URLを書き換えてみます。
# cp /etc/yum.repos.d/remi-php70.repo /etc/yum.repos.d/remi-php71.repo
# vi /etc/yum.repos.d/remi-php71.repo
# This repository only provides PHP 7.1 and its extensions
# NOTICE: common dependencies are in "remi-safe"
[remi-php71]
name=Remi's PHP 7.1 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php71/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php71/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-php71-debuginfo]
name=Remi's PHP 7.1 RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-php71/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-php71-test]
name=Remi's PHP 7.1 test RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/test71/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/test71/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-php71-test-debuginfo]
name=Remi's PHP 7.1 test RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-test71/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
やったこととしてはURLの70や7.0の値を71または7.1に置換するだけです。
また旧バージョンのremi-php70は不要になるのでenabled=1を0に変更し今後は利用しないようにします。
# vi /etc/yum.repos.d/remi-php70.repo
# cat remi-php70.repo
# This repository only provides PHP 7.0 and its extensions
# NOTICE: common dependencies are in "remi-safe"
[remi-php70]
name=Remi's PHP 7.0 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php70/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php70/mirror
- enabled=1
+ enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
3.yumを実行
レポジトリの準備ができたのでyumでphpを7.1にアップデートします。
# yum update php --enablerepo=remi-php71 /////省略///// ================================================================================ Package Arch Version Repository Size ================================================================================ Updating: php x86_64 7.1.0-1.el6.remi remi-php71 2.8 M Updating for dependencies: php-cli x86_64 7.1.0-1.el6.remi remi-php71 4.1 M php-common x86_64 7.1.0-1.el6.remi remi-php71 976 k php-gd x86_64 7.1.0-1.el6.remi remi-php71 64 k php-json x86_64 7.1.0-1.el6.remi remi-php71 51 k php-mbstring x86_64 7.1.0-1.el6.remi remi-php71 975 k php-mcrypt x86_64 7.1.0-1.el6.remi remi-php71 48 k php-mysqlnd x86_64 7.1.0-1.el6.remi remi-php71 200 k php-opcache x86_64 7.1.0-1.el6.remi remi-php71 218 k php-pdo x86_64 7.1.0-1.el6.remi remi-php71 103 k php-pecl-apcu x86_64 5.1.7-2.el6.remi.7.1 remi-php71 70 k php-pecl-apcu-bc x86_64 1.0.3-6.el6.remi.7.1 remi-php71 14 k php-process x86_64 7.1.0-1.el6.remi remi-php71 59 k php-tidy x86_64 7.1.0-1.el6.remi remi-php71 52 k php-xml x86_64 7.1.0-1.el6.remi remi-php71 172 k Transaction Summary ================================================================================ Upgrade 15 Package(s) Total download size: 9.8 M Is this ok [y/N]: y /////省略///// Updated: php.x86_64 0:7.1.0-1.el6.remi Dependency Updated: php-cli.x86_64 0:7.1.0-1.el6.remi php-common.x86_64 0:7.1.0-1.el6.remi php-gd.x86_64 0:7.1.0-1.el6.remi php-json.x86_64 0:7.1.0-1.el6.remi php-mbstring.x86_64 0:7.1.0-1.el6.remi php-mcrypt.x86_64 0:7.1.0-1.el6.remi php-mysqlnd.x86_64 0:7.1.0-1.el6.remi php-opcache.x86_64 0:7.1.0-1.el6.remi php-pdo.x86_64 0:7.1.0-1.el6.remi php-pecl-apcu.x86_64 0:5.1.7-2.el6.remi.7.1 php-pecl-apcu-bc.x86_64 0:1.0.3-6.el6.remi.7.1 php-process.x86_64 0:7.1.0-1.el6.remi php-tidy.x86_64 0:7.1.0-1.el6.remi php-xml.x86_64 0:7.1.0-1.el6.remi Complete!
途中PHPのAPIバージョンが異なる旨のWarningが出ていましたが、アップデートは完了しました。
Warningは起動中のapacheが呼び出し中のphpバージョンが古いままなことが原因なようです。特に問題なさそうなのでこのまま続けます。
まずはPHPのバージョンを確認します。
# php -v PHP 7.1.0 (cli) (built: Dec 1 2016 08:23:35) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.1.0, Copyright (c) 1999-2016, by Zend Technologies
そしてhttpdを再起動して、httpdから呼び出すphpを再読み込みさせます。
# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
4.アップデートの効果は?
試験環境で1割程度レスポンスが速くなったことを確認し、本番環境に適用しました。
が、いつのまにか試験環境のHTTPレスポンスが元に戻っていました。PHP7.0からPHP7.1へのアップデートに高速化の効果は無いようです。