【PHPのバージョンをアップグレード】CentOSでyumを使ってphp7.0をインストールする方法

開発用に構築したCentOS6.xにインストールされているPHPが5.3.3と古いものだったので、PHP7.0をインストール・アップグレードをしました。その手順は今後も使えそうなことなので、以下にメモしています。

もし似たようなことをされたい場合はご参考ください。

RPMパッケージをインストールしよう

まずRPMパッケージをインストールします。以下のコマンドを実行してください。CentOS 6.x系と7.x系で若干コマンドが違うので、使用しているCentOSのバージョンにあったコマンドを実行してインストールします。

CentOS 6.x系の場合

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

CentOS 7.x系の場合

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

ちなみにパッケージ名についている「noarch」とは「no architecture(ノー・アーキテクチャー)」の略で「例えばLinux,WindowsなどOSの違いに関係なく使えるRPMパッケージだよ」ということだと何となく理解しています(もっといろいろな意味がありそう。解釈が間違っていたらすみません)。

rpmコマンドにオプションの「-Uvh」を付けて、RPMパッケージが既にインストールされている場合はアップグレード(パッケージがない場合はインストール)してくれます。

PHP7.0をインストールしよう

RPMパッケージをインストールしたら、以下のコマンドを実行してPHP7.0をインストールしてアップグレードしましょう。依存関係にあるパッケージもインストールしてくれます。便利ですね。

PHP7.0をインストール

sudo yum install -y php70w

nginxを使う場合は「php-fpm」をインストールします。

php-fpmをインストール

sudo yum install -y php70w-fpm

OPcacheを使う場合は「php-opcache」をインストールします。

OPcacheをインストール

sudo yum install -y php70w-opcache

上記のインストールをまとめてしまってもOKです。

まとめてインストール

sudo yum install -y php70w php70w-fpm php70w-opcache

インストール中にエラーが出ている場合もあるので注意

古いPHPのパッケージが残っていると、以下のように「コンフリクトしてインストールできないよ」というエラーメッセージが表示されることがあります。

php-commonがコンフリクトしててエラー

Error: php70w-common conflicts with php-common-5.3.3-46.el6_7.1.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

その場合はyumの「replace」プラグインを使って、コンフリクトしているパッケージを置き換えればOKです。まずはプラグインをインストールします。

「replace」プラグインをまずインストール

sudo yum install -y yum-plugin-replace

コンフリクトしているパッケージを置き換える

sudo yum replace php-common --replace-with=php70w-common

下の画像のように、新しくインストールするPHP7.0と古いPHP5.3.3の置き換えが行われます。どのパッケージが置き換わるのか確認してインストールを実行したかったので、yumのオプションの「-y」はあえて付けませんでした。

installcentosphp70

置き換えの際に退避されたファイルを確認する

置き換えを行う際に、古いPHP5.3.3で使用していたphp.iniファイルは削除されず「php.ini.rpmnew」とファイル名を変更して残してくれます。(php-fpmなども使用していた場合は残してくれます。残してくれるファイルは置き換えの際に以下のようなメッセージが表示されるので、確認しましょう)

これまで使っていたphp.iniファイルは残してくれる

warning: /etc/php.ini created as /etc/php.ini.rpmnew

もし以前のphp.iniファイルを使用したい場合は「php.ini.rpmnew」のファイル名をphp.iniに変更して再利用するなどできますね。

PHPのバージョン確認をしてみよう

一通りの作業が完了したら、うまくインストールされているかどうか確認も兼ねてバージョン情報を表示してみます。以下のコマンドを実行します。

バージョン情報を表示

php -v

バージョン情報が表示されたらOK

PHP 7.0.3 (cli) (built: Feb 4 2016 21:15:42) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

インストールが終わったらサービスを再起動しておこう

PHPをインストールした後は、各種サービスを再起動して反映させましょう。

apacheを使っている場合

sudo service httpd restart

nginxを使っている場合

sudo service nginx restart

まとめ

というわけで「PHPのバージョンが古いんで、PHP7.0にアップグレードしたいな」という方はご参考くださいますとうれしいです。

PHP5.x系とPHP7.0系では動くコード・動かないコードなどがあるので、サーバーの移転やプログラムのコンバージョン対応などの機会に、このようなアップグレード作業というのは必要な場面もあると思います。

また、このページの作成には「PHP 7 on CentOS/RHEL 6.7 and 7.2 via Yum」を参考にしました。大変助かりました・・・ありがとうございます。

著者:bouya Imamura