はじめに
CentOS7.Xで標準的にインストールされるPHPのバージョンは、2017-12-30現在で、5.4.16
である。
筆者は、運用しているCentOS7サーバで、eポートフォリオシステムmaharaを動かしているが、2017-10-30にリリースされた17.10.Xから、PHPの推奨バージョンが、PHP5.5.X以降になった。
このため、最新バージョンのmaharaを動かすにあたって、標準で提供されているPHPのバージョンでは、運用ができないことがわかる。
そこで、CentOS7のサーバのPHPのバージョンを最新の7.1.Xにしてしまおうと考えた。
しかし、いろいろなサイトを検索し、参考にさせてもらったが、いくつかハマった部分があったため、備忘録としてここに示す。
==== 2018-12-13 ====
バージョン7.2.xと7.3.xを追記
アップデート前環境概要
L):CentOSバージョン:CentOS Linux release 7.4.1708 (Core)
A):Apacheバージョン:Server version: Apache/2.4.6 (CentOS)
M):MySQLバージョン:mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
P):PHPバージョン:PHP 5.4.16 (cli)
アップデート手順
リポジトリの追加
PHPを標準のリポジトリからではなく、他のところから持ってくるため、EPELとREMIのリポジトリを追加しておく(参考文献(1))。
【EPELリポジトリ】
以下のコマンドを打つ
# yum install epel-release
または
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
【REMIリポジトリ】
以下のコマンドを打つ
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
現在のPHPを全て削除
PHPをバージョンアップするにあたっては、結局、入れ直す必要がある。このためバージョンアップ、アップデートというよりは、再インストールするに近い。
なお、/etc/php.ini
などでPHPに特殊に設定しているものがあれば、念のためcp
コマンドなどで、退避しバックアップしておくといい。
設定ファイルのバックアップ等が済んだら、以下のコマンドを打つ
# yum remove php-*
これで、PHPが亡くなった。。。。
新しいPHPをインストール
ここから標準よりも新しいバージョンのPHPを入れていく。なお、最新にすればいいというものでもなく、関数が変更されていたりすることから5.6や7.0、7.1のいずれかを検討してインストールすること。
バージョンを決めたら以下のコマンドを打つ、そしてインストールする
【PHP5.6.xの場合】
# yum install --enablerepo=remi,remi-php56 php
【PHP7.0.xの場合】
# yum install --enablerepo=remi,remi-php70 php
【PHP7.1.xの場合】
# yum install --enablerepo=remi,remi-php71 php
【PHP7.2.xの場合】
# yum install --enablerepo=remi,remi-php72 php
【PHP7.3.xの場合】
# yum install --enablerepo=remi,remi-php73,epel php.x86_64
なお、--disablerepo=*
は、いったんリポジトリを全て無効にして、remiのみからPHPをとってくるために必要なオプションである。これがあればスムーズにバージョン指定ができる。
ちなみに筆者は、このオプション無しにコマンドを打つと、どうしてもPHP5.4.xのものが指定されてしまった。。。このオプションはつけておいて損はないと思われる(参考文献(2))。
PHP関連パッケージの追加(もとのPHP環境に戻す)
上記で、PHP本体をインストールした。ここからは、以前のPHPで使っていた関連パッケージをインストールして元に戻す。特に変わった作業はないが、上記のPHP本体を入れる時に同時にしてしまうのも良い。
関連パッケージでインストールするものが決まったら、次のコマンドを打つ、そしてインストールする
例)php-mysqlnd
と php-intl
を入れたいとき
【PHP5.6.xの場合】
# yum install --disablerepo=* --enablerepo=remi,remi-php56 php-mysqlnd php-intl
【PHP7.0.xの場合】
# yum install --disablerepo=* --enablerepo=remi,remi-php70 php-mysqlnd php-intl
【PHP7.1.xの場合】
# yum install --disablerepo=* --enablerepo=remi,remi-php71 php-mysqlnd php-intl
【PHP7.2.xの場合】
# yum install --disablerepo=* --enablerepo=remi,remi-php72 php-mysqlnd php-intl
【PHP7.3.xの場合】
# yum install --disablerepo=* --enablerepo=remi,remi-php73 php-mysqlnd php-intl
PHP設定の復元
上記で必要なパーツはそろった。最後にPHPの設定を復元して終える。
# vi /etc/php.ini
必要な項目をコメントアウトを取ったりしておわる。
おわりに
PHP5.4.x
からのバージョンアップは、結局のところ、入れ直すだけである。そのためのコマンドを探すのが大変なのであると感じた。
他にも様々なサイトを参考にさせてもらいましたが、主要な方(検索トップヒットで一番上に来る方)のみを抜粋させていただきました。ありがとうございました。