[CentOS6] PHP5.3からPHP5.4にバージョンアップしましたの巻

スポンサーリンク

今回、ある事情でPHPのバージョンを5.4以上にする必要が出来た。
対象のサーバーではPHP5.3が動いていてこれをバージョンアップする必要があった。
拙者、yumでどうにかやってしまいたい人でして、今回もyumでやってみました。

# 同様の手順でPHP5.5のインストールも行えます。
# パッケージ名をphp55uにしてphp54をphp55uに読み替えてください。

やったことは以下のとおり

  1. ちょっとした事前調査(Google検索)
  2. IUSのレポジトリの追加
  3. 過去バージョンの削除
  4. 新バージョンのインストール
  5. インストール後の確認
  6. Apacheの再起動

特に問題はなかったけど、少し汚いやり方になってしまいました。参考になれば幸いです。

スポンサーリンク

事前調査

「centos php 5.4」でGoogle検索した時に最初に表示されたページ。
Qiita[キータ]での記事だったので疑いもせずにポチッとな

CentOS6のPHP5.3をPHP5.4に入れ替える – Qiita [キータ]

ふむふむ、PHP5.4はphp54という名前IUSのレポジトリからyumでインストールができるらしい。
で、既存のphpとそれを依存としているパッケージをアンインストールして、その後にyumでphp54をインストールすればいいとのこと。phpに依存する他パッケージをインストールしていない人は問題ないと思うけど、依存するパッケージがある人(私)はプラスアルファでの対応が必要そうです。

事前調査終了、Let’s do it!ヽ(・∀・)ノ

IUSのyumレポジトリを追加する

#余談ですが、IUSは「Inline with Upstream Stable」の短縮だそうです。詳細はこちら

事前調査で紹介させていただいたサイトを参考に以下のコマンドを実行してIUSのyumレポジトリを追加します。
32ビット版はx86_64をi386に変更してください。

# rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-11.ius.el6.noarch.rpm

上記コマンドは、wgetでダウンロードしてきてrpmでインストールするという手順をまとめて行っちゃう方法です。
ダウンロードしたrpmファイルは保存されませんので、rpm -ivh後のrpmパッケージの削除もしなくて済むので便利ですね。

ちなみにrpmのマニュアル(man rpm)でも以下の様に説明されています。

PACKAGE_FILE には ftp または http の URL を指定することが可能で、その場合にはパッケージをインストールする前にダウンロードする。 rpm 内部での ftpと http のサポートについての情報は FTP/HTTP オプションの節を参照のこと。

In these options, PACKAGE_FILE can be either rpm binary file or ASCII package manifest (see PACKAGE SELECTION OPTIONS), and may be specified as an ftp or http URL, in which case the package will be downloaded before being installed. See FTP/HTTP OPTIONS for information on rpm’s internalftp and http client support.

ちょっと話がそれてしまいましたが、IUSのレポジトリを追加し終わったら念の為にyumコマンドで確認しておきましょう。

# yum repolist ius

「IUS Community Packages for Enterprise Linux 6 – x86_64」を含む行が確認できればIUSレポジトリの追加は完了しています。

過去バージョンPHP5.3の削除

phpの削除を行う上でちょっと問題となったのが、PHPに依存する他パッケージを利用していることでした。当方の環境ではRoundCubeMailとWebSVNをyum経由でインストールしておりまして、それらがPHP5.3に依存するから削除できないよー(´;ω;`)ってなってしまったのです。

ここは、今までの経験を活かして、rpmコマンドを用いて依存関係を無視して無理やり削除を行いました。

# rpm -e php php-common php-cli --nodeps

新バージョンのインストール

php5.4のインストールは以下のとおりyumでポチッとな を行うだけです。

# yum -y install php54 php54-common php54-cli

インストール完了後、もし5.3で/etc/php.iniに特別な設定追加を行っていた場合は、php5.3のアンインストールの際に「/etc/php.ini.rpmsave」として保存されているので、コピーしてphp.iniにしてあげてください。

# cp -p /etc/php.ini /etc/php.ini.org54
# cp -p /etc/php.ini.rpmsave /etc/php.ini

インストール後の確認

インストールが完了したあとは、以下のコマンドで新しいバージョンが確認できることを確認します。

# php -v

私の場合、覚悟はしていたのですが、php -v 実行時に以下のようなエラーがでました。抜粋して記載します。

PHP Warning: PHP Startup: dom: Unable to initialize module
PHP Warning: PHP Startup: mbstring: Unable to initialize module
PHP Warning: PHP Startup: mcrypt: Unable to initialize module
PHP Warning: PHP Startup: ~

これらは、現在あるモジュールがphp5.3の時のまんまなので、読み込みエラーってますー(T . T)ってことです。

なので、対象となっているパッケージ(モジュール)をすべて削除して、変わるものをインストールしてやります。

対象となるパッケージは以下の方法で確認できます。
#間違っていたらコメントで教えてください。

# for n in `ls /etc/php.d/` ; do rpm -qf /etc/php.d/$n ; done | sort | uniq | egrep -v 'common'

/etc/php.d/ 配下のファイル(ls /etc/php.d/)が、どのパッケージによって提供されているかを調べ(rpm -qf ファイル)、結果をソートして重複する項目をなくし、「common」を含むものを除いたものを表示するコマンドです。

結果として対象となるパッケージがわかりますので、結果を対象にrpm -eして、yumでインストールして完了ですね。

例:php-mysql を削除してyumインストールする場合

# rpm -e --nodeps php-mysql
# yum -y install php54-mysql

簡単ですね( ̄▽ ̄)

さて、すべてのモジュールをphp54の物に変更し終わりましたら、問題ないか再度確認しましょう。

# php -v
PHP 5.4.22 (cli) (built: Nov 15 2013 10:09:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
#

先程まで確認していたエラーが表示されずに綺麗に表示されていますね(*´∀`*)

Apacheの再起動

最後にWebサーバーに新しいphpを読み込ませるためにApache(もしくはその他Webサービス)の再起動を行いましょう。

# service httpd restart

Apacheが新しいPHPを正しく認識しているかをブラウザから確認したい場合は、以下の記述を書いたphpinfo.php(ファイル名はなんでもいい.php)をサーバーにおいてアクセスしてみてください。

[php]<?php phpinfo(); ?>[/php]

よし、これでやりたいことが出来る様になったぞヾ(@⌒ー⌒@)ノブンブン

以上です(・∀・)★

コメント

  1. くりくり より:

    こんにちは
    最近いっぱい記事かいておりますね。
    私は忙しくコメントできませんでしたが・・・。
    そういえばphpはremiじゃなかったですか?
    俺もMariaDBに変えてみました。mysql5.5+αくらいな感じですね。
    コマンドプロンプトになんのデータベースつかってるかわかりやすかったりとmysqlよりはちょっといいかな。
    まだ全然わかっておりませんけどw

    それとrehl7のbete版がでていましたね。
    まだ触っていませんが、FSはxfsがデフォルトになったり
    FirewallDがめんどくさそうでしたね。iptablesもあるみたいです。

  2. trippyboy より:

    くりくりさん
    おひさしぶりです!最近コメントいただけていなくてちょっと心細かったです(汗

    自サーバのPHPはremiなのですが、仕事関係で使っている内部サーバーはremiではないんです。
    PHPのバージョンが5.4以上を必要とするTestLink(http://ja.wikipedia.org/wiki/TestLink)を使ってみたくて
    インストールしようと思ったらバージョンの不足で対応にいたった次第です。

    MariaDB,MySQLという名前からかわりましたーぐらいの認識しかないのですが、これからの成長過程で
    たぶん特色がでてくるのかなぁぐらいの認識しかしていません。

    rehl7のbeta版ですか。。
    FSがxfsってのは、今後は用途に合わせてパーティション分けての運用が必要になるのですかね。
    http://hesonogoma.com/linux/FileSystemBenchmarkResults-02.html のページによると
    ファイルの作成削除の速度が少しおそいんですかね。。あんまりFSを気にして運用してないので
    挑戦になりそうです。

    そういえば、20日(私の誕生日)に入籍しました!★

  3. くりくり より:

    おはようございます。
    誕生日とご結婚おめでとうございます!!

    trippyboyのこれからのご活躍を祈っております!!
    お互いがんばりましょう。

  4. くりくり より:

    さっそくbeta版で遊んでいるわけですが、インストール画面でipv4を入力できません。
    ifconfigでipを追加して/etc/sysconfig/network-scriptsのeth0にかわるをenoXXXXXXXXを編集して有効化しました。
    おまけ、centos7はphpのパッケージは5.4.16になりますね。
    5.5.6だとおもっていたんですけどね・・・。

    [root@www ~]# rpm -qa |grep php
    php-common-5.4.16-7.el7.x86_64
    php-fpm-5.4.16-7.el7.x86_64
    php-cli-5.4.16-7.el7.x86_64
    php-mbstring-5.4.16-7.el7.x86_64
    php-pdo-5.4.16-7.el7.x86_64
    php-5.4.16-7.el7.x86_64
    php-mysql-5.4.16-7.el7.x86_64

  5. trippyboy より:

    くりくりさん
    おはようございます。メリークリスマスヾ(@⌒ー⌒@)ノ!

    え!?デフォルトでIPv4の設定項目がなくなっているんですねっ
    となると、IPv4環境でのネットインストールとかできないんですね。
    IPv6を自宅で引いている人って結構いるものなのでしょうか。最近のプロバイダ状況がわからない・・・
    enoXXXXXXXXXって、マックアドレスかなにかですか?
    こちら↓の記事のかたも早速試されているようです。シャットダウンコマンドとかも変わったようですね。
    http://mrs.suzu841.com/mini_memo/numero_22.html

    php5.5ってどうなんでしょう。
    なんかざっと検索したら結構Bugがあるようだったので、5.4にしたんですけど、5.5の方がいいのかなぁ

  6. くりくり より:

    おはようございます。
    >enoXXXXXXXXXって、マックアドレスかなにかですか?
    eth0にかわるインタフェースの名前ですね。
    #vi ifcfg-eno16777736
    NAME=eno16777736というのがあったのでこれかえれば変更できるのかもしれません。

    php5.5ってどうなんでしょう。
    5.5からopcacheというものがありFedora20とremiにphp-opcacheパッケージがありますね。
    opcacheを有効にした場合abコマンドで1.4倍以上になることを検証された方がいました。

  7. trippyboy より:

    おはようございます

    >NAME=eno16777736というのがあったのでこれかえれば変更できるのかもしれません。
    でも、デバイスの何かの情報を元にこの値が決まっていると思うんですよねぇ~
    そうじゃないとデバイスの特定ができないと思うんです。
    あまり気にしないでおきますw

    このブログはCentOS5.10で運用しているのですが、remiレポジトリにphp5.5がなかったので、http://www.webtatic.com/packages/php55/ を参考に「webtatic-el5」というレポジトリを追加して
    remi離れしてphp5.5に出来るかやってみます!

    Available Packages
    Name : php55w-opcache
    Arch : i386
    Version : 5.5.7
    Release : 1.w5
    Size : 113 k
    Repo : webtatic-el5
    Summary : An opcode cache Zend extension
    URL : http://www.php.net/
    License : PHP
    Description: The php55w-opcache package contains an opcode cache used for caching and
    : optimizing intermediate code.

  8. くりくり より:

    http://www.xserver.ne.jp/manual/man_server_php_apc.php
    Xserverでapcとopcacheの比較がでていますので、参考にどうぞ

  9. trippyboy より:

    うわ!
    すごくわかりやすく綺麗にまとめられているじゃないですか!
    参考にさせていただきます!

タイトルとURLをコピーしました