エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説

      2019/02/24

CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順

 

WordPressを運用しているPHPのバージョンが5.3.3だった

 
WordPressを運用しているサーバの PHPのバージョンが 5.3.3でした。
そのため、WordPressのバージョンアップが行えず、プラグインを使用するにも制限がありました。
 
そのため、ようやく重い腰を上げて PHPのバージョンをアップする作業を行いました。
その作業手順をまとめつつ、解説をしていこうと思います。
 
 
ちなみに、この案件もそうでしたが、諸般の事情で PHPのバージョンアップが行われていないサーバはいっぱいあるんだろうなぁ、ということを改めて実感しました。
 
 
もう一つちなみに、ここでは、「5.3.x」から「5.6.x」「7.0.x」「7.1.x」にバージョンアップする想定での説明ですが、「5.6.x」から「7.0.x」「7.1.x」にバージョンアップする場合も手順は全く変わりません。
 
 

PHPのバージョンアップを行うサーバ環境の確認

 
まず始めに、現在のサーバの状況を確認します。
 
ちなみに、コマンドの実行は、root権限で行います。
rootユーザに切り替えることができない場合は「sudo」コマンドを利用してください。
 
 
下記のコマンドで現在のPHPのバージョンを確認します。

 
先にも書きましたが、この時の PHPのバージョンが「5.3.x」ではなく「5.4.x」でも同様の手順でバージョンアップの対応は可能です。
 
 
続けて、下記のコマンドで OSのバージョンを確認します。

 
ここで確認したバージョンは、remiリポジトリを追加する際のバージョンを指定するために必要です。
 
 
さらに、下記のコマンドを実行し、現在インストールされているライブラリを確認します。

 
ここで確認したライブラリは、PHPをアップデートする際にあわせてアップデートをするライブラリを指定するために必要です。
 


 

バージョンアップに必要なリポジトリの追加

 
PHPのバージョンアップをするために必要なリポジトリを追加します。
 
下記コマンドを実行し、CentOS系の epelリポジトリを追加します。
(CentOS6系、CentOS7系共通です。)
 

 
このコマンドを実行すると、処理実行の途中で 1回「Is this ok [y/N]:」と聞かれますので、「y」を入力します。
そして、最終的に「Complete!」と表示されると、リポジトリが正常に追加されたことになります。
 
「Package epel-release-6-8.noarch already installed and latest version」と表示される場合は、すでに最新のリポジトリが追加されている状態であることになります。
この場合は、すでに最新なのでそのまま作業を続行します。
 
 
続いて、下記のコマンドを実行し、CentOS系の remiリポジトリを追加します。
 
CentOS6系は以下のコマンドになります。

 
CentOS7系は以下のコマンドになります。

 
CentOS6と CentOS7の違いは、リリースナンバーの「6」と「7」の違いだけです。
 
また、「rpm」コマンドのオプションの「-U」は「アップグレード」の意味で、「-i」は「新規インストール」です。
「-U」であれば、既存のリポジトリがあればアップグレードしますし、なければ新規インストールしますので、「-U」の方が便利です。
 
詳しくは、下記のサイトを参照にしてください。
http://nakayanmer.e-central.tv/pc/rpm_com.html
 
 

PHPのバージョンアップコマンドの実行

 
いよいよ、PHPをバージョンアップするコマンドを実行します。
 
PHPを 5.6にバージョンアップする場合は、下記のコマンドを実行します。

 
このコマンドを実行すると、処理実行の途中で 2回ほど「Is this ok [y/N]:」と聞かれますので、「y」を入力します。
 
そして、最終的に「Complete!」と表示されると、正常にアップデートが完了したことが確認できます。
 
 
PHPを 7.0にバージョンアップする場合は、下記のコマンドを実行します。

 
PHPを 7.1にバージョンアップする場合は、下記のコマンドを実行します。

 
PHPのバージョンを 5.6、7.0、7.1にするコマンドの違いは、「remi-php56」の部分の数値が「70」「71」と変わるだけです。
ここの数値を変えるだけで、希望のバージョンの PHPにアップデートすることができます。
 
 
また、このコマンドの「php php-pdo php-mbstring php-common php-cli php-mysql」の部分は、インストール(アップデート)するライブラリを指定している箇所になります。
 
ここで指定するライブラリは、インストールされているライブラリを指定します。
インストールされているライブラリは、最初の項で確認した「rpm -aq | grep php」コマンドで表示されたライブラリを指定します。
 
厳密な運用をしているサーバでは、必要ないライブラリはインストールしませんが、開発環境などで、インストールするライブラリを管理していない場合は、下記のコマンドを実行し、最新のライブラリをまとめてインストールする方法でもいいでしょう。
 

 
 
また、インストールしていないライブラリを後から追加したい場合は、下記のコマンドを実行します。
先のコマンドは「update」ですが、こちらは「install」になっています。
 

 


 

アップデート実施の検証

 
PHPのバージョンアップが完了したら、正しくバージョンアップできたかを確認し、Apacheを再起動して反映させます。
 
 
まず、PHPのバージョンを確認します。
一番最初に実行したコマンドと同じく下記のコマンドを実行し、PHPのバージョンが 5.6系になっていることを確認します。
 
 

 
 
続けて、下記のコマンドを実行し、Apacheの再起動を行います。
 

 
Apacheの再起動コマンドは、複数存在します。
それぞれ特徴があり、詳しくは「Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド」に記事を書いていますが、前者は、実行の結果が表示されますが、アクセス中のユーザがあっても強制的に再起動されます。
 
後者は、実行の結果などのメッセージは全く表示されませんが、アクセス中のユーザはアクセスが続行でき、アクセスが切れたタイミングで新しい設定に切り替わります。
 
そのため、開発環境などであれば前者を。本番環境などであれば後者を使うことが一般的です。
 
 
最後に、下記のコマンドを実行し、Apacheに PHPのバージョンアップが反映されたかを確認します。
 
下記の「phpinfo()」関数だけが記述された PHPファイルを作成します。

 
これを、ブラウザでアクセスできる場所にアップし、画面の一番上に表示される PHPのバージョンが「5.6.xx」になっていることを確認します。
これで「5.6.xx」(もしくは「7.0.xx」「7.1.xx」)になっていればすべての作業は無事に完了です。
 
 
ちなみに、下記のコマンドを実行することで、コマンドラインから「phpinfo()」関数を実行することができます。

 
ですが、このコマンドでは、Apacheを再起動をしなくても PHPのバージョンが新しいものに切り替わるため、Apacheの再起動が正しく行われ、Apacheにも新しいバージョンが反映されたかどうかの確認はできませんので注意が必要です。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Comment

  1. まさのり より:

    こんばんは。
    今更7.2に上げようと思っているのですが、一回削除してから入れた方が良いのでしょうか?それとも上記のようにアップデートでも問題ないのかどうか。
    5.3.3なので早めに対処しなければ。。。
    ちなみにアップデートの場合、php.iniは書き換えされてしまいましたか?

    • エス技研 より:

      まさのりさん、コメントありがとうございます。
       
      古いバージョンの PHPを削除するか、否かは、どこまで完璧なバージョンアップをしたいか、ということになるのだろうと思います。
      古いバージョンのファイルが残ったりしますので。
       
      ここに記載した手順で PHP 5.6へのバージョンアップは問題なく実施でき、php.iniも書き換えることなく動作しています。
      現在もこの環境は問題が発生することなく動作しています。
       
      ただ、PHP 7系へのバージョンアップは、VirtualBoxで環境をクローン(複製)して、バージョンアップ、動作検証をしたはずですが、細かな内容は失念してしまっています。申し訳ありません。php.iniは変更せずに動いたはずです。
       
      また、Apacheと PHPのバージョンの関連も失念してしまっていますが、もし、Apacheを 2.2系から 2.4系にあげる必要がある場合は、httpd.confの設定方法が変わりますので、その対応が大変であったと記憶しています。

      • まさのり より:

        エス技研さん

        こんばんは。
        ご返信どうもありがとうございます。
        さっそくアップデートやってみました。

        まずページに記載されている内容で試してみたのですが、私の環境ではエラーでできませんでした。
        # yum update –enablerepo=remi,remi-php72

        これでやってみたのですが、どうもこれを見ていないようなエラーが出まくりでした。
        そこで
        # vi /etc/yum.repos.d/remi-php72.repo
        [remi-php72]の直下にpriority=1を追記

        これをやったらアップデートできました。
        良かったのかどうだか定かではありませんが。

        WEBサイトの表示がかなり早いですね。
        おかげさまで表示の問題は出なかったのですが、やってよかったという感じです。
        良いきっかけをくださってどうもありがとうございました。
        今後も応援しています。

        • エス技研 より:

          まさのりさん、コメントありがとうございます。
           
          エラーが出たそうですが、さらに調べて対応されて、無事にアップデートできたようなので良かったです!
          まさのりさんがエラーのときに対応できる方でよかったです!!
           
          実際にあれこれやってみて上手く行ったときは嬉しいですけど、本来あるべき方法と比べて全く問題ないのか、もしくは、どこがどれくらい問題があるのか、っていうのがよく分からないところが悩ましいところですよね。
          エラーなく動いてしまうと...
           
          でも、何かのきっかけに新しい知識が入ってきたときに、気づくこともあるわけですが。
           
          今後も役に立ちそうな記事を書いていきますので、今後ともよろしくお願いいたします!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う
WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う

strptimeはWindowsのPHPには未実装。LinuxとMacで挙動が異なる。PHP8.1で非推奨になる。なので日付のチェックはdate_parse_from_formatを使おう。使い方を詳細解説。

路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索
路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索

路線・駅検索の仕組みの構築は大変。登録する側も最寄り駅が多い場合は大変。なので簡易に実装するため緯度経度に基づき直線距離を計算する処理を考案して実装して、その処理を解説。

PHP range関数を使って階乗と重複組み合わせを計算

PHPの range関数を使って階乗と重複組み合わせを計算し、それを元に乱数発生器を作成しました。

Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説

お問い合わせ等のメールフォームから送ったメールがスパム扱いされる!その対策としてライブラリ「Phpmailer」を使う方法を解説。関数化していますのでコピペでOK。

パーミッション(属性)一括変更ツール・WordPress最適化済

WordPressのパーミッション(属性)を一括変更するツールを作成!ファイル、フォルダのパーミッションが一覧表示でき、ファイルを選んでパーミッションの変更が行えます。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

SEO対策用タイトル、ディスクリプションの文字数カウントツール

SEO対策に使える文字数カウントツールで文字数の条件の説明も行っています。

数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!
数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!

PHPでintegerとdoubleが混在するような計算をする場合は要注意!計算結果が整数値であっても途中で使用する変数にdoubleの値が入っているときは計算結果がintegerではない場合があります。

include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由

include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。

ECCUBEでテンプレートファイルのファイルサイズは10MB以下のものを使用してくださいのエラーが出た場合

テンプレートをアップロードする際にファイルサイズが大きすぎてエラーが表示される際の対処方法解説。パラメータ設定で設定する制限について解説を行っています。