開発用に構築した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」はあえて付けませんでした。
置き換えの際に退避されたファイルを確認する
置き換えを行う際に、古い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」を参考にしました。大変助かりました・・・ありがとうございます。
このページを共有する