PHPのバージョン

アップデート中に1台のサーバーのphpバージョンが
7.3であることに気づき最新バージョンの7.4に
アップグレードしておきました。
7.4でもマイナーなアップグレードがあり、バージョンは
7.4.1・7.4.2のようになりますが、現時点での最新版は
7.47になります。

phpのバージョンの大きなアップグレードでは、
phpで書いたアプリの不具合が多発するのは、前に
書いた通りですが、理由は簡単で、変更された部分が
下位バージョンと互換性を持たないことによります。
全く使えない旧バージョンの関数があったり、使えても
書式が変わり、書き換えしないとエラーを吐いたり、
次期バージョンでは消え去る予定のモノは、推奨されない
という警告が発せられたり。。。
例えばこのサーバーでPHP5.6を7.0にアップグレード
したときは、ブログに投稿した本文が真っ白けになって
表示しなくなりました。
ブログツール自体はPHPバージョンをアップグレード
しなきゃダメよ!というメッセージがあった位ですから
問題なかったのですが、採用したプラグインに未対応の
ものがいくつかあり、プラグインを読み込んだ時点で
投稿内容が表示なくなるという現象が起きました。

出来るものはソースを書き換えて対応しましたが、
出来なかったものは対応済みの同じ機能のものに
交換したり、たいして必要のない機能なら
そのプラグイン自体を諦めて削除しちゃいました。

これは個人サーバーですからこの程度で済みますが、
複数ドメイン・複数ユーザーで、PHPで書いたweb
アプリがたくさんインストールされているサーバーは
大変でした。
おおまかな対応が必要な旨をそえて、バージョンを上げる
通知しましたが、ちょっと待ってくれぇ!コールや
勘弁してくれ!の声が・・・

PHPバージョンのフル(アクティブ)サポートは2年です。
2年が過ぎてもセキュリティサポートのみ後1年受けられます
ver.5.6はそれもとっくに切れていますが、サーバーOSの
開発舞台が独自でセキュリティサポートしている状態です。
7に変更すると、他のパッケージとの互換性が崩れて
しまうための処置のようです。

しかし、PHP8のアルファ版がすでにリリースされており、
近日中に正規版がリリースされることは間違いありません。
いつまでも5.6ではまずいでしょう。
で、サーバー上でそのアプリをいじるることを許可して
いただいたところは、不具合が発生したら個別対応を
お約束してバージョンのアップグレードを決行しました。

不具合発生は思ったほどではなかったことと、管理者が
自力で修正していただけたものもあり、ブログやCMS等
PHPを利用したwebアプリを20ほど修正しただけで
済んだのはラッキーでした。
でもこれはドメインが20程度、ユーザーが130人程度の
小規模サーバーの話で、大規模なサーバーでは個別対応
なんてことは出来ないでしょう。
せいぜいサポートディスクで対応するくらいでしょうから
混乱したでしょうねぇ。

ところでCentOS7では標準リポジトリからPHPを
インストールすると、先程の理由からver.5.6に
なってしまいます。
最新バージョンにするにはphpサイトから落として、
自力でインストールするか、MySQLやPHPの最新の
バージョンを置いてあるサードパーティのリポジから
インストールします。
PHPは多くのパッケージと依存性があるので、それらも
自力で・・・ってのは大変なので、サードパーティの
リポジを使うのが正解でしょう。
最新版はremiというリポジに置いてあります。

remiを登録するには、連携しているEPELというリポジを
事前に登録しておかなくてはなりません。
EPELはyumコマンドで簡単に登録できます。

# yum install epel-release

登録した後コンフィグを編集して、EPELを使うことを
明示的に指定しなければ、使えないようにします。
標準リポジとバージョン違いの同じパッケージがあると
面倒くさいことになりかねないからです。。。

# vi /etc/yum.repos.d/epel.repo

で[epel]の

enabled=1

を 

enabled=0

に変更します。@これだけ。。。

次にremiです。
remiはyunコマンドでは登録できません。

GPG keyをセットする。

# rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

コンフィグはディフォルトで enable=0 になって
いるはずですが、一応確認しておきましょう。

これでEPELとremiにあるパッケージをインストールしたり
アップデート出来るようになりました。

yumを使ってphpを5から7にしてみます。

まずは標準リポジトリでインストールされている
古いバージョンを削除しちゃいます。

# yum remove php-*

その後

# yum install –disablerepo=* –enablerepo=epel,remi,remi-safe,remi-php74 php

でPHP7.4がインストールされます。

単に

yum install php 

だけだと標準リポジの5.6になってしまうので

–enablerepo=epel,remi,remi-safe,remi-php74

オプションを使います。

しかし –enablerepo=epel,remi,remi-safe,remi-php74
のみをオプションとすると、明示的に指定した
サードパーティのリポジ以外に、標準リポジも参加
しちゃうので、先程言った面倒が起きる可能性があり、
まずは

–disablerepo=*

で、すべてのリポジを使えなくしてから、明示的に
使用するリポジを指定してやるという仕組みです。

注意としてはphp74の部分は数字を間違えないように。
73にするとver.7.3、56にするとver.5.6がインストール
されちゃいます。

ちなみに今回7.3から7.4にしたときは

# yum update –disablerepo=* –enablerepo=remi-php74 php

だったと思います。@すでに曖昧^^;;
で、結果php7.4.7の最新版になってくれました。

なお、リポジトリの持つパッケージのバージョンは
yumコマンドを使ってで調べることができます。

# yum info php

名前 : php
アーキテクチャー : x86_64
バージョン : 7.4.7
リリース : 1.el7.remi
容量 : 10 M
リポジトリー : installed
提供元リポジトリー : remi-php74
要約 : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
ライセンス : PHP and Zend and BSD and MIT and ASL 1.0 and NCSA
説明 : PHP is an HTML-embedded・・・省略

てなやつが出てきますので、これを見れば remi-php74
を指定すれば良いことがわかります。

HOME

おすすめ