CentOS6のPHP7.0をPHP7.1にアップデートしてみる

yumのremi-php70レポジトリでインストールしたPHP7.0系をPHP7.1にアップデートしてみます。

1.前提条件

今回の作業の前提条件は2つ。
1つは、yumのremi-php70レポジトリでPHP7.0にバージョンアップ済なこと。

CentOS6にPHP7を導入してWordPressを高速化する
サイトの高速化を色々と検証した結果、まずはPHPのアップデートを行うことにしました。 CentOS6のPHPは5.3なのでPHP...

もう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へのアップデートに高速化の効果は無いようです。