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のバージョンを確認します。
1 2 |
# php -v PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09) |
先にも書きましたが、この時の PHPのバージョンが「5.3.x」ではなく「5.4.x」でも同様の手順でバージョンアップの対応は可能です。
続けて、下記のコマンドで OSのバージョンを確認します。
1 2 |
# cat /etc/redhat-release CentOS release 6.7 (Final) |
ここで確認したバージョンは、remiリポジトリを追加する際のバージョンを指定するために必要です。
さらに、下記のコマンドを実行し、現在インストールされているライブラリを確認します。
1 2 3 4 5 6 7 |
# rpm -aq | grep php php-pdo-5.3.3-46.el6_7.1.x86_64 php-mbstring-5.3.3-46.el6_7.1.x86_64 php-common-5.3.3-46.el6_7.1.x86_64 php-cli-5.3.3-46.el6_7.1.x86_64 php-mysql-5.3.3-46.el6_7.1.x86_64 php-5.3.3-46.el6_7.1.x86_64 |
ここで確認したライブラリは、PHPをアップデートする際にあわせてアップデートをするライブラリを指定するために必要です。
バージョンアップに必要なリポジトリの追加
PHPのバージョンアップをするために必要なリポジトリを追加します。
下記コマンドを実行し、CentOS系の epelリポジトリを追加します。
(CentOS6系、CentOS7系共通です。)
1 |
# yum install epel-release |
このコマンドを実行すると、処理実行の途中で 1回「Is this ok [y/N]:
」と聞かれますので、「y」を入力します。
そして、最終的に「Complete!」と表示されると、リポジトリが正常に追加されたことになります。
「Package epel-release-6-8.noarch already installed and latest version」と表示される場合は、すでに最新のリポジトリが追加されている状態であることになります。
この場合は、すでに最新なのでそのまま作業を続行します。
続いて、下記のコマンドを実行し、CentOS系の remiリポジトリを追加します。
CentOS6系は以下のコマンドになります。
1 |
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm |
CentOS7系は以下のコマンドになります。
1 |
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
CentOS6と CentOS7の違いは、リリースナンバーの「6」と「7」の違いだけです。
また、「rpm」コマンドのオプションの「-U」は「アップグレード」の意味で、「-i」は「新規インストール」です。
「-U」であれば、既存のリポジトリがあればアップグレードしますし、なければ新規インストールしますので、「-U」の方が便利です。
詳しくは、下記のサイトを参照にしてください。
http://nakayanmer.e-central.tv/pc/rpm_com.html
PHPのバージョンアップコマンドの実行
いよいよ、PHPをバージョンアップするコマンドを実行します。
PHPを 5.6にバージョンアップする場合は、下記のコマンドを実行します。
1 |
# yum update --enablerepo=remi,remi-php56 php php-pdo php-mbstring php-common php-cli php-mysql |
このコマンドを実行すると、処理実行の途中で 2回ほど「Is this ok [y/N]:
」と聞かれますので、「y」を入力します。
そして、最終的に「Complete!」と表示されると、正常にアップデートが完了したことが確認できます。
PHPを 7.0にバージョンアップする場合は、下記のコマンドを実行します。
1 |
# yum update --enablerepo=remi,remi-php70 php php-pdo php-mbstring php-common php-cli php-mysql |
PHPを 7.1にバージョンアップする場合は、下記のコマンドを実行します。
1 |
# yum update --enablerepo=remi,remi-php71 php php-pdo php-mbstring php-common php-cli php-mysql |
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
」コマンドで表示されたライブラリを指定します。
厳密な運用をしているサーバでは、必要ないライブラリはインストールしませんが、開発環境などで、インストールするライブラリを管理していない場合は、下記のコマンドを実行し、最新のライブラリをまとめてインストールする方法でもいいでしょう。
1 |
# yum update --enablerepo=remi,remi-php56 |
また、インストールしていないライブラリを後から追加したい場合は、下記のコマンドを実行します。
先のコマンドは「update」ですが、こちらは「install」になっています。
1 |
# yum install --enablerepo=remi,remi-php56 php php-soap |
アップデート実施の検証
PHPのバージョンアップが完了したら、正しくバージョンアップできたかを確認し、Apacheを再起動して反映させます。
まず、PHPのバージョンを確認します。
一番最初に実行したコマンドと同じく下記のコマンドを実行し、PHPのバージョンが 5.6系になっていることを確認します。
1 2 3 4 |
# php -v PHP 5.6.33 (cli) (built: Jan 3 2018 13:11:40) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies |
続けて、下記のコマンドを実行し、Apacheの再起動を行います。
1 2 3 |
# service httpd restart もしくは # /etc/init.d/httpd graceful |
Apacheの再起動コマンドは、複数存在します。
それぞれ特徴があり、詳しくは「Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド」に記事を書いていますが、前者は、実行の結果が表示されますが、アクセス中のユーザがあっても強制的に再起動されます。
後者は、実行の結果などのメッセージは全く表示されませんが、アクセス中のユーザはアクセスが続行でき、アクセスが切れたタイミングで新しい設定に切り替わります。
そのため、開発環境などであれば前者を。本番環境などであれば後者を使うことが一般的です。
最後に、下記のコマンドを実行し、Apacheに PHPのバージョンアップが反映されたかを確認します。
下記の「phpinfo()」関数だけが記述された PHPファイルを作成します。
1 2 |
<?php phpinfo(); |
これを、ブラウザでアクセスできる場所にアップし、画面の一番上に表示される PHPのバージョンが「5.6.xx」になっていることを確認します。
これで「5.6.xx」(もしくは「7.0.xx」「7.1.xx」)になっていればすべての作業は無事に完了です。
ちなみに、下記のコマンドを実行することで、コマンドラインから「phpinfo()」関数を実行することができます。
1 |
# php -r 'phpinfo();' | grep 'PHP Version' |
ですが、このコマンドでは、Apacheを再起動をしなくても PHPのバージョンが新しいものに切り替わるため、Apacheの再起動が正しく行われ、Apacheにも新しいバージョンが反映されたかどうかの確認はできませんので注意が必要です。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較
PHPからWebサイトにアクセスしてHTMLを取得、APIにアクセスして情報を取得する場合は、cURLがオススメ。file_get_contentsでも可能だがエラー制御に難がありトラブルのもとになる。
-
数値文字参照コード変換ツール(HTML特殊文字コード変換ツール)
テキストを数値文字参照コード(特殊文字コード)に変換するツール。テキストを数値文字参照コードに簡単変換。数値文字参照、文字実体参照、特殊文字などの違いも解説。
-
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。
-
ECCUBEでテンプレートファイルのファイルサイズは10MB以下のものを使用してくださいのエラーが出た場合
テンプレートをアップロードする際にファイルサイズが大きすぎてエラーが表示される際の対処方法解説。パラメータ設定で設定する制限について解説を行っています。
-
ECCUBEの商品一覧ページのSEO対策!rel=”next” rel=”prev”を設定
Googleは関連あるページはその旨明示するよう求めています。ECCUBEの商品一覧ページでその求めに応じるための「rel=”next”」「rel=”prev”」について解説します。
-
ECCUBEを開発環境から本番ドメインに変更でエラーが・パス変更について
レンタルサーバでサーバ会社から割り当てられたURLで開発し、本番公開時にドメインを当てたらエラーが!そんな場合の対処方法の解説。対処方法は簡単ですが管理画面からは対応不可。
-
GMOペイメントゲートウェイのjava.io.IOExceptionのエラー
ECCUBEの決済でGMOペイメントゲートウェイのモジュールを使ってテスト決済を行った場合の不具合、java.io.IOExceptionと言うエラーの原因と対策方法の解説です。
-
サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない
PHPでショートタグを使うのは危険。サーバ移転やバージョンアップで動かなくなる!ソースが丸見え、設定情報流出のリスクが!php.iniのshort_open_tagの設定を再確認。
-
ファイル変更だけ!ECCUBEの本番から開発環境をコピーする手順を解説
ECCUBEを本番から開発環境をコピーする際の手順を解説。PGMメンテに必要な開発環境を構築する手順を解説。ECCUBEの仕組みは簡単なので作業は5分ほど。
-
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。
Comment
こんばんは。
今更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サイトの表示がかなり早いですね。
おかげさまで表示の問題は出なかったのですが、やってよかったという感じです。
良いきっかけをくださってどうもありがとうございました。
今後も応援しています。
まさのりさん、コメントありがとうございます。
エラーが出たそうですが、さらに調べて対応されて、無事にアップデートできたようなので良かったです!
まさのりさんがエラーのときに対応できる方でよかったです!!
実際にあれこれやってみて上手く行ったときは嬉しいですけど、本来あるべき方法と比べて全く問題ないのか、もしくは、どこがどれくらい問題があるのか、っていうのがよく分からないところが悩ましいところですよね。
エラーなく動いてしまうと...
でも、何かのきっかけに新しい知識が入ってきたときに、気づくこともあるわけですが。
今後も役に立ちそうな記事を書いていきますので、今後ともよろしくお願いいたします!