1. Home
  2. PHP
  3. Basics
  4. CentOS7のPHP7.1を7.2にアップグレードする[remi]

CentOS7のPHP7.1を7.2にアップグレードする[remi]

  • 公開日
  • 更新日
  • カテゴリ:Basics
  • タグ:PHP,Linux,CentOS,7.2,7.1,remi,Upgrade,yum,Basics
CentOS7のPHP7.1を7.2にアップグレードする[remi]

2017 年 11 月 30 日に PHP7.2 がリリースされました。
PHP7.2 の変更点
http://php.net/manual/ja/migration72.php

様々な変更点がありますが、総合的に PHP7.1 よりも 10%て程度高速化されたようです。

今回は、PHP7.1 から 7.2 へアップグレードを行います。

Contents

  1. 検証環境
  2. 現状把握
  3. PHP の削除
  4. PHP7.2 インストール

検証環境

今回の検証環境は以下の通りです。

  • Linux CentOS 7.2
  • Apache 2.4
  • PHP 7.1

尚、PHP のインストールには remi リポジトリを使用します。

現状把握

まずは現状把握から行っていきます。

現在の PHP のバージョンを確認します。

# PHP のバージョンを確認
php -v

# 実行結果
[demo@localhost sources]# php -v
PHP 7.1.13 (cli) (built: Jan  3 2018 11:00:58) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.13, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

7.1.13 なので、これを 7.2 にアップグレードする事になります。

ついでにインストールされている RPM パッケージの状態を確認しておきます。

# インストールされている RPM パッケージの状態を確認
rpm -qa | grep php

# 実行結果
[demo@localhost sources]# rpm -qa | grep php
php-symfony-console-2.8.32-1.el7.remi.noarch
php-symfony-security-acl-2.8.0-4.el7.remi.noarch
php-doctrine-orm-2.5.12-1.el7.remi.noarch
php-symfony-framework-bundle-2.8.32-1.el7.remi.noarch
php-symfony-security-bundle-2.8.32-1.el7.remi.noarch
php-phpunit-PHPUnit-5.7.26-1.el7.remi.noarch
php-devel-7.1.13-1.el7.remi.x86_64
php-opcache-7.1.13-1.el7.remi.x86_64
php-jsonlint-1.6.1-1.el7.noarch
php-justinrainbow-json-schema5-5.2.6-1.el7.noarch
php-common-7.1.13-1.el7.remi.x86_64
php-process-7.1.13-1.el7.remi.x86_64
php-symfony-class-loader-2.8.32-1.el7.remi.noarch
php-symfony-finder-2.8.32-1.el7.remi.noarch
php-symfony-stopwatch-2.8.32-1.el7.remi.noarch
php-sebastian-recursion-context-2.0.0-1.el7.remi.noarch
php-symfony-options-resolver-2.8.32-1.el7.remi.noarch
php-doctrine-collections-1.4.0-1.el7.remi.noarch
php-phpunit-diff-1.4.3-1.el7.remi.noarch
php-phpunit-PHP-Invoker-1.1.4-1.el7.remi.noarch
php-phpdocumentor-reflection-docblock-3.2.2-1.el7.remi.noarch
php-sebastian-code-unit-reverse-lookup-1.0.1-1.el7.remi.noarch
php-doctrine-inflector-1.1.0-4.el7.remi.noarch
php-bcmath-7.1.13-1.el7.remi.x86_64
php-symfony-config-2.8.32-1.el7.remi.noarch
php-phpunit-comparator-1.2.4-1.el7.1.noarch
php-Monolog-1.23.0-1.el7.remi.noarch
php-symfony-ldap-2.8.32-1.el7.remi.noarch
php-intl-7.1.13-1.el7.remi.x86_64
php-symfony-translation-2.8.32-1.el7.remi.noarch
php-symfony-var-dumper-2.8.32-1.el7.remi.noarch
php-symfony-event-dispatcher-2.8.32-1.el7.remi.noarch
php-symfony-form-2.8.32-1.el7.remi.noarch
php-symfony-security-2.8.32-1.el7.remi.noarch
php-doctrine-dbal-2.5.12-3.el7.remi.noarch
php-doctrine-datafixtures-1.0.2-5.el7.remi.noarch
php-symfony-doctrine-bridge-2.8.32-1.el7.remi.noarch
php-symfony-web-profiler-bundle-2.8.32-1.el7.remi.noarch
php-symfony-twig-bundle-2.8.32-1.el7.remi.noarch
php-symfony-swiftmailer-bridge-2.8.32-1.el7.remi.noarch
php-phpunit-Version-2.0.1-1.el7.remi.noarch
php-sebastian-global-state-1.1.1-1.el7.remi.noarch
php-mcrypt-7.1.13-1.el7.remi.x86_64
php-pear-1.10.5-4.el7.remi.noarch
php-pecl-zip-1.15.2-1.el7.remi.7.1.x86_64
php-pecl-xdebug-2.5.5-1.el7.remi.7.1.x86_64
php-seld-phar-utils-1.0.1-1.el7.noarch
php-composer-ca-bundle-1.0.2-1.el7.noarch
php-composer-semver-1.4.2-1.el7.noarch
php-json-7.1.13-1.el7.remi.x86_64
php-7.1.13-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.remi.noarch
php-PsrLog-1.0.2-2.el7.remi.noarch
php-pdo-7.1.13-1.el7.remi.x86_64
php-symfony-common-2.8.32-1.el7.remi.noarch
php-symfony-yaml-2.8.32-1.el7.remi.noarch
php-symfony-property-access-2.8.32-1.el7.remi.noarch
php-symfony-process-2.8.32-1.el7.remi.noarch
php-symfony-filesystem-2.8.32-1.el7.remi.noarch
php-symfony-templating-2.8.32-1.el7.remi.noarch
php-doctrine-annotations-1.2.7-4.el7.remi.noarch
php-phpunit-exporter-2.0.0-1.el7.remi.noarch
php-symfony-css-selector-2.8.32-1.el7.remi.noarch
php-symfony-debug-2.8.32-1.el7.remi.noarch
php-phpunit-PHP-Timer-1.0.9-1.el7.remi.noarch
php-phpunit-File-Iterator-1.4.5-1.el7.remi.noarch
php-phpdocumentor-type-resolver-0.4.0-1.el7.remi.noarch
php-sebastian-object-enumerator-2.0.1-1.el7.remi.noarch
php-webmozart-assert-1.2.0-1.el7.remi.noarch
php-password-compat-1.0.4-1.el7.remi.noarch
php-sebastian-resource-operations-1.0.0-2.el7.remi.noarch
php-phpunit-PHP-TokenStream-1.4.12-1.el7.remi.noarch
php-phpdocumentor-reflection1-1.0.7-5.el7.remi.noarch
php-doctrine-common-2.7.2-1.el7.remi.noarch
php-xml-7.1.13-1.el7.remi.x86_64
php-symfony-dependency-injection-2.8.32-1.el7.remi.noarch
php-symfony-browser-kit-2.8.32-1.el7.remi.noarch
php-phpspec-prophecy-1.7.3-1.el7.remi.noarch
php-twig-1.35.0-1.el7.remi.7.1.noarch
php-paragonie-random-compat-2.0.11-1.el7.remi.noarch
php-symfony-serializer-2.8.32-1.el7.remi.noarch
php-soap-7.1.13-1.el7.remi.x86_64
php-symfony-http-foundation-2.8.32-1.el7.remi.noarch
php-symfony-asset-2.8.32-1.el7.remi.noarch
php-symfony-intl-2.8.32-1.el7.remi.noarch
php-symfony-locale-2.8.32-1.el7.remi.noarch
php-composer-spdx-licenses-1.3.0-1.el7.noarch
php-gd-7.1.13-1.el7.remi.x86_64
php-symfony-http-kernel-2.8.32-1.el7.remi.noarch
php-symfony-twig-bridge-2.8.32-1.el7.remi.noarch
php-symfony-property-info-2.8.32-1.el7.remi.noarch
php-symfony-debug-bundle-2.8.32-1.el7.remi.noarch
php-symfony-monolog-bridge-2.8.32-1.el7.remi.noarch
php-phpunit-PHP-CodeCoverage-4.0.8-3.el7.remi.noarch
php-symfony-2.8.32-1.el7.remi.noarch
php-mysqlnd-7.1.13-1.el7.remi.x86_64
php-seld-cli-prompt-1.0.3-1.el7.noarch
php-cli-7.1.13-1.el7.remi.x86_64
php-mbstring-7.1.13-1.el7.remi.x86_64
php-doctrine-cache-1.6.1-1.el7.remi.noarch
php-symfony-expression-language-2.8.32-1.el7.remi.noarch
php-doctrine-instantiator-1.0.5-1.el7.remi.noarch
php-doctrine-lexer-1.0.1-8.el7.remi.noarch
php-phpunit-Text-Template-1.2.1-1.el7.remi.noarch
php-phpunit-environment-2.0.0-1.el7.remi.noarch
php-phpdocumentor-reflection-common-1.0.1-1.el7.remi.noarch
php-ldap-7.1.13-1.el7.remi.x86_64
php-egulias-email-validator-1.2.13-3.el7.remi.noarch
php-myclabs-deep-copy-1.7.0-1.el7.remi.noarch
php-phpdocumentor-reflection-docblock2-2.0.5-1.el7.remi.noarch
php-symfony-dom-crawler-2.8.32-1.el7.remi.noarch
php-swiftmailer-5.4.8-3.el7.remi.noarch
php-symfony-polyfill-1.5.0-1.el7.remi.noarch
php-phpunit-PHPUnit-MockObject-3.4.4-1.el7.remi.noarch
php-symfony-routing-2.8.32-1.el7.remi.noarch
php-symfony-validator-2.8.32-1.el7.remi.noarch

PHP7.1 のパッケージが確認できます。

次に、導入している remi リポジトリに 7.2 があるか確認します。

# remi リポジトリを確認する
ll /etc/yum.repos.d/ | grep remi-

# 実行結果
[demo@localhost sources]# ll /etc/yum.repos.d/ | grep remi-
-rw-r--r--. 1 root root  456 Jan 16 07:06 remi-php54.repo
-rw-r--r--. 1 root root 1314 Jan 16 07:06 remi-php70.repo
-rw-r--r--. 1 root root 1314 Jan 16 07:06 remi-php71.repo
-rw-r--r--. 1 root root 1314 Jan 16 07:06 remi-php72.repo // ← ココ
-rw-r--r--. 1 root root  750 Jan 16 07:06 remi-safe.repo

7.2 のリポジトリが無い場合は remi リポジトリをアップデートしてください。

PHP の削除

それでは、現在インストールされている PHP を削除します。

# PHP と関連パッケージを削除
yum remove php-*

# 実行結果
[demo@localhost sources]# yum remove php-*
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:7.1.13-1.el7.remi will be erased
.
.
.
省略
.
.
.
Dependency Removed:
  composer.noarch 0:1.6.3-1.el7

Complete!

ここで改めて RPM パッケージの状態を確認すると、削除された事を確認できます。

[demo@localhost ~]# rpm -qa | grep php
// 何も表示されない
[demo@localhost ~]# 

PHP7.2 インストール

ここから、実際に PHP7.2 をインストールしていきます。

まずは、導入出来る PHP の詳細を確認します。

# 導入出来る PHP の詳細を確認
yum info --enablerepo=remi,remi-php72 php

# 実行結果
[root@localhost ~]# yum info --enablerepo=remi,remi-php72 php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: mirror.dmmlabs.jp
 * extras: www.ftp.ne.jp
 * remi: repo1.sea.innoscale.net
 * remi-php72: repo1.sea.innoscale.net
 * remi-safe: repo1.sea.innoscale.net
 * updates: www.ftp.ne.jp
Available Packages
Name        : php
Arch        : x86_64
Version     : 7.2.2
Release     : 1.el7.remi
Size        : 3.2 M
Repo        : remi-php72
Summary     : PHP scripting language for creating dynamic web sites
URL         : http://www.php.net/
License     : PHP and Zend and BSD and MIT and ASL 1.0
Description : PHP is an HTML-embedded scripting language. PHP attempts to make it
            : easy for developers to write dynamically generated web pages. PHP also
            : offers built-in database integration for several commercial and
            : non-commercial database management systems, so writing a
            : database-enabled webpage with PHP is fairly simple. The most common
            : use of PHP coding is probably as a replacement for CGI scripts.
            :
            : The php package contains the module (often referred to as mod_php)
            : which adds support for the PHP language to Apache HTTP Server.

本記事執筆時点では 7.2.2 のようです。これをインストールします。

# PHP 7.2 インストール
yum -y install --enablerepo=remi,remi-php72 php

終わったらバージョン確認のコマンドを叩いて導入を確認します。

# バージョンを確認
php -v

# 実行結果
[demo@localhost ~]# php -v
PHP 7.2.2 (cli) (built: Jan 30 2018 13:44:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

PHP 7.2 がインストールされました。

ついでにエクステンション(拡張)もインストールしておきます。

# エクステンションのインストール
[demo@localhost ~]# yum -y install --enablerepo=remi --enablerepo=remi-php72 php php-opcache php-devel php-mbstring php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-gd php-intl php-symfony php php-pdo php-xml php-tokenizer php-pear php-zip

改めて RPM パッケージの状態を確認します。

# インストールされている RPM パッケージの状態を確認
rpm -qa | grep php

# 実行結果
[demo@localhost ~]# rpm -qa | grep php
php-common-7.2.2-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.remi.noarch
php-symfony-common-2.8.34-1.el7.remi.noarch
php-symfony-expression-language-2.8.34-1.el7.remi.noarch
php-symfony-property-access-2.8.34-1.el7.remi.noarch
php-symfony-filesystem-2.8.34-1.el7.remi.noarch
php-symfony-templating-2.8.34-1.el7.remi.noarch
php-sebastian-recursion-context-2.0.0-1.el7.remi.noarch
php-symfony-debug-2.8.34-1.el7.remi.noarch
php-symfony-options-resolver-2.8.34-1.el7.remi.noarch
php-phpunit-Version-2.0.1-1.el7.remi.noarch
php-ldap-7.2.2-1.el7.remi.x86_64
php-egulias-email-validator-1.2.13-3.el7.remi.noarch
php-phpdocumentor-reflection-docblock-3.2.2-1.el7.remi.noarch
php-sebastian-code-unit-reverse-lookup-1.0.1-1.el7.remi.noarch
php-phpdocumentor-reflection1-1.0.7-5.el7.remi.noarch
php-paragonie-random-compat-2.0.11-1.el7.remi.noarch
php-symfony-asset-2.8.34-1.el7.remi.noarch
php-symfony-ldap-2.8.34-1.el7.remi.noarch
php-soap-7.2.2-1.el7.remi.x86_64
php-symfony-console-2.8.34-1.el7.remi.noarch
php-symfony-security-acl-2.8.0-4.el7.remi.noarch
php-doctrine-orm-2.5.12-1.el7.remi.noarch
php-symfony-framework-bundle-2.8.34-1.el7.remi.noarch
php-symfony-security-bundle-2.8.34-1.el7.remi.noarch
php-phpunit-PHPUnit-5.7.27-2.el7.remi.noarch
php-pecl-xdebug-2.6.0-1.el7.remi.7.2.x86_64
php-json-7.2.2-1.el7.remi.x86_64
php-7.2.2-1.el7.remi.x86_64
php-xml-7.2.2-1.el7.remi.x86_64
php-symfony-class-loader-2.8.34-1.el7.remi.noarch
php-symfony-yaml-2.8.34-1.el7.remi.noarch
php-process-7.2.2-1.el7.remi.x86_64
php-pdo-7.2.2-1.el7.remi.x86_64
php-doctrine-cache-1.6.1-1.el7.remi.noarch
php-symfony-process-2.8.34-1.el7.remi.noarch
php-doctrine-instantiator-1.0.5-1.el7.remi.noarch
php-symfony-config-2.8.34-1.el7.remi.noarch
php-symfony-translation-2.8.34-1.el7.remi.noarch
php-symfony-stopwatch-2.8.34-1.el7.remi.noarch
php-doctrine-annotations-1.2.7-4.el7.remi.noarch
php-phpunit-exporter-2.0.0-4.el7.remi.noarch
php-phpunit-environment-2.0.0-1.el7.remi.noarch
php-symfony-css-selector-2.8.34-1.el7.remi.noarch
php-symfony-browser-kit-2.8.34-1.el7.remi.noarch
php-phpunit-File-Iterator-1.4.5-1.el7.remi.noarch
php-doctrine-collections-1.4.0-1.el7.remi.noarch
php-phpdocumentor-reflection-common-1.0.1-1.el7.remi.noarch
php-phpunit-comparator-1.2.4-4.el7.remi.noarch
php-phpdocumentor-type-resolver-0.4.0-1.el7.remi.noarch
php-sebastian-object-enumerator-2.0.1-2.el7.remi.noarch
php-Monolog-1.23.0-1.el7.remi.noarch
php-webmozart-assert-1.2.0-1.el7.remi.noarch
php-phpspec-prophecy-1.7.5-1.el7.remi.noarch
php-myclabs-deep-copy-1.7.0-1.el7.remi.noarch
php-phpunit-PHP-TokenStream-1.4.12-1.el7.remi.noarch
php-phpdocumentor-reflection-docblock2-2.0.5-1.el7.remi.noarch
php-sebastian-resource-operations-1.0.0-2.el7.remi.noarch
php-doctrine-common-2.7.2-1.el7.remi.noarch
php-symfony-polyfill-1.5.0-1.el7.remi.noarch
php-symfony-routing-2.8.34-1.el7.remi.noarch
php-symfony-intl-2.8.34-1.el7.remi.noarch
php-symfony-serializer-2.8.34-1.el7.remi.noarch
php-symfony-locale-2.8.34-1.el7.remi.noarch
php-swiftmailer-5.4.9-1.el7.remi.noarch
php-phpunit-PHPUnit-MockObject-3.4.4-3.el7.remi.noarch
php-symfony-var-dumper-2.8.34-1.el7.remi.noarch
php-symfony-http-kernel-2.8.34-1.el7.remi.noarch
php-symfony-form-2.8.34-1.el7.remi.noarch
php-symfony-security-2.8.34-1.el7.remi.noarch
php-doctrine-dbal-2.5.12-3.el7.remi.noarch
php-doctrine-datafixtures-1.0.2-5.el7.remi.noarch
php-symfony-doctrine-bridge-2.8.34-1.el7.remi.noarch
php-symfony-web-profiler-bundle-2.8.34-1.el7.remi.noarch
php-symfony-twig-bundle-2.8.34-1.el7.remi.noarch
php-symfony-monolog-bridge-2.8.34-1.el7.remi.noarch
php-sebastian-global-state-1.1.1-1.el7.remi.noarch
php-symfony-2.8.34-1.el7.remi.noarch
php-pear-1.10.5-6.el7.remi.noarch
php-pecl-zip-1.15.2-1.el7.remi.7.2.x86_64
php-devel-7.2.2-1.el7.remi.x86_64
php-cli-7.2.2-1.el7.remi.x86_64
php-mbstring-7.2.2-1.el7.remi.x86_64
php-PsrLog-1.0.2-2.el7.remi.noarch
php-intl-7.2.2-1.el7.remi.x86_64
php-symfony-finder-2.8.34-1.el7.remi.noarch
php-symfony-dependency-injection-2.8.34-1.el7.remi.noarch
php-doctrine-lexer-1.0.1-8.el7.remi.noarch
php-phpunit-Text-Template-1.2.1-1.el7.remi.noarch
php-symfony-dom-crawler-2.8.34-1.el7.remi.noarch
php-phpunit-PHP-Timer-1.0.9-1.el7.remi.noarch
php-phpunit-diff-1.4.3-1.el7.remi.noarch
php-phpunit-PHP-Invoker-1.1.4-5.el7.remi.noarch
php-password-compat-1.0.4-1.el7.remi.noarch
php-twig-1.35.0-1.el7.remi.7.2.noarch
php-phpunit-PHP-CodeCoverage-4.0.8-4.el7.remi.noarch
php-doctrine-inflector-1.1.0-4.el7.remi.noarch
php-symfony-http-foundation-2.8.34-1.el7.remi.noarch
php-symfony-validator-2.8.34-1.el7.remi.noarch
php-bcmath-7.2.2-1.el7.remi.x86_64
php-gd-7.2.2-1.el7.remi.x86_64
php-symfony-event-dispatcher-2.8.34-1.el7.remi.noarch
php-symfony-twig-bridge-2.8.34-1.el7.remi.noarch
php-symfony-property-info-2.8.34-1.el7.remi.noarch
php-symfony-debug-bundle-2.8.34-1.el7.remi.noarch
php-symfony-swiftmailer-bridge-2.8.34-1.el7.remi.noarch
php-mysqlnd-7.2.2-1.el7.remi.x86_64
php-opcache-7.2.2-1.el7.remi.x86_64

7.2 のパッケージがインストールされている事が確認できます。

最後に、再起動をして PHP7.2 を適用させます。

# Apache 再起動
service httpd restart

# 実行結果
[root@localhost ~]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service

これで PHP7.2 のインストールは完了です。

まとめ

以上で作業は完了です。バージョンアップを細かく行っていく事でシステム全体を健全に保ちつつ、搭載しているアプリケーションの変更作業を最小限に抑える事ができます。

特に 7.2 では Mcrypt 拡張の削除など、WEB アプリケーション、特に PHP フレームワークのコア部分にも影響のある変更点もあるので、古いまま使っていると、あるタイミングでバージョンを上げようとしても色々と大変になってしまいます。なるべく PHP コアソースやフレームワークのバージョンは最新に保っていく事が運用の面でも良いと思います。

Author

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級