CentOS 6系でyumを使ってPHPを5.6系にアップグレードする手順

とあるサーバにて必要にせまられてPHPのバージョンを5.5以上にあげることになりました。手順をまとめておこうと思います。

前提条件として、OSが「CentOS release 6.7 (Final)」、インストール済みyumリポジトリ「epel」の環境で作業しています。

PHPのバージョンを何にするか、を検討しますが、2016年1月現在、7.0系が最新のようですが、ちょっとバージョンを上げ過ぎな気がするので、5.x系の最新である5.6系にすることにしました。
検索してみると、CentOSにyumでアップグレードするにはremiのリポジトリを利用するようです。どのrpmを使えばいいのか確認するために、本家のサイトを見てみます。

Remi’s RPM repository

Remi Wizard

すると、左に「Configuration wizard」というメニューがあるので、ここにアクセスします。

Remi Wizard

ここで、OS、PHPのバージョン、インストールタイプを選択すると、手順が表示されます。
僕の場合にはそれぞれ、CentOS 6、PHP 5.6、Singleを選択しました。

Remi Wizard

この後は基本的にはこの手順にそってアップグレードしていきます。
それでは実際に実行したコマンドを紹介して行きます。ここからは画像のない色さびしい記事になります…

リポジトリのインストール状態の確認

まずはインストールされているリポジトリをチェックします。

yum repolist all

Remiはインストールされていませんでしたが、EPELはインストール済みでした。
また、どうしてそうしたのかは忘れてしまいましたが、EPELがenabledになっていたので、明示的に使うようにdisabledに変更しておきます。

yum-config-manager --disable epel

公式サイトのインストラクションでは、enabled前提っぽい書き方になっています。オプションでenabledにしても構わないので、ここは好みや運用方針で変更して構わないと思います。

リポジトリのインストール

今回はRemiのみインストールすることになります(EPELがインストール済みだったので)。

yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm

php関連のインストール状況チェック

インストール済みのphp関連のパッケージをもらさずアップグレードしたいのでチェックします。

rpm -qa | grep php

結果は以下のとおりでした。

php-mysql-5.3.3-46.el6_6.x86_64
php-bcmath-5.3.3-46.el6_6.x86_64
phpldapadmin-1.2.3-1.el6.noarch
php-process-5.3.3-46.el6_6.x86_64
php-ldap-5.3.3-46.el6_6.x86_64
php-php-gettext-1.0.11-12.el6.noarch
php-5.3.3-46.el6_6.x86_64
php-mbstring-5.3.3-46.el6_6.x86_64
php-gd-5.3.3-46.el6_6.x86_64
php-tcpdf-dejavu-sans-fonts-6.2.11-1.el6.noarch
php-mcrypt-5.3.3-4.el6.x86_64
php-cli-5.3.3-46.el6_6.x86_64
php-devel-5.3.3-46.el6_6.x86_64
php-tidy-5.3.3-46.el6_6.x86_64
phpMyAdmin-4.0.10.12-1.el6.noarch
php-common-5.3.3-46.el6_6.x86_64
php-xml-5.3.3-46.el6_6.x86_64
php-pdo-5.3.3-46.el6_6.x86_64
php-imap-5.3.3-46.el6_6.x86_64
php-tcpdf-6.2.11-1.el6.noarch
php-pear-1.9.4-4.el6.noarch

アップグレードするパッケージリストを作成

上の結果から、スペースで区切ってパッケージリストを生成しておきます。

php-mysql php-bcmath phpldapadmin php-process php-ldap php-php-gettext php php-mbstring php-gd php-tcpdf-dejavu-sans-fonts php-mcrypt php-cli php-devel php-tidy phpMyAdmin php-common php-xml php-pdo php-imap php-tcpdf php-pear

拡張リポジトリを使ってyumのアップデート

remi、remi-php56n、epelを使ってyumのアップデートを実行します。

yum update php-mysql php-bcmath phpldapadmin php-process php-ldap php-php-gettext php php-mbstring php-gd php-tcpdf-dejavu-sans-fonts php-mcrypt php-cli php-devel php-tidy phpMyAdmin php-common php-xml php-pdo php-imap php-tcpdf php-pear --enablerepo=epel,remi,remi-php56

すると対象パッケージがこんな感じで出てきますので、インストールします。

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php-mysqlnd x86_64 5.6.16-1.el6.remi remi-php56 273 k
replacing php-mysql.x86_64 5.3.3-46.el6_6
Updating:
php x86_64 5.6.16-1.el6.remi remi-php56 2.7 M
php-bcmath x86_64 5.6.16-1.el6.remi remi-php56 55 k
php-cli x86_64 5.6.16-1.el6.remi remi-php56 3.9 M
php-common x86_64 5.6.16-1.el6.remi remi-php56 1.1 M
php-devel x86_64 5.6.16-1.el6.remi remi-php56 1.2 M
php-gd x86_64 5.6.16-1.el6.remi remi-php56 75 k
php-imap x86_64 5.6.16-1.el6.remi remi-php56 74 k
php-ldap x86_64 5.6.16-1.el6.remi remi-php56 58 k
php-mbstring x86_64 5.6.16-1.el6.remi remi-php56 965 k
php-mcrypt x86_64 5.6.16-1.el6.remi remi-php56 46 k
php-pdo x86_64 5.6.16-1.el6.remi remi-php56 116 k
php-pear noarch 1:1.10.1-1.el6.remi remi 363 k
php-php-gettext noarch 1.0.11-12.el6.remi remi 20 k
php-process x86_64 5.6.16-1.el6.remi remi-php56 60 k
php-tcpdf noarch 6.2.12-1.el6.remi remi 2.8 M
php-tcpdf-dejavu-sans-fonts noarch 6.2.12-1.el6.remi remi 315 k
php-tidy x86_64 5.6.16-1.el6.remi remi-php56 50 k
php-xml x86_64 5.6.16-1.el6.remi remi-php56 213 k
phpMyAdmin noarch 4.4.15.2-1.el6.remi remi 4.7 M
Installing for dependencies:
gd-last x86_64 2.1.1-2.el6.remi remi 135 k
libvpx x86_64 1.3.0-5.el6_5 base 486 k
libzip-last x86_64 1.0.1-1.el6.remi remi 40 k
php-gmp x86_64 5.6.16-1.el6.remi remi-php56 55 k
php-pecl-jsonc x86_64 1.3.9-1.el6.remi.5.6 remi-php56 50 k
php-pecl-jsonc-devel x86_64 1.3.9-1.el6.remi.5.6 remi-php56 30 k
php-pecl-zip x86_64 1.13.1-1.el6.remi.5.6 remi-php56 52 k
php-phpseclib noarch 2.0.0-4.el6.remi remi 202 k
php-recode x86_64 5.6.16-1.el6.remi remi-php56 32 k
php-symfony-class-loader noarch 2.7.8-1.el6.remi remi 22 k
php-symfony-common noarch 2.7.8-1.el6.remi remi 100 k
recode x86_64 3.6-28.1.el6 base 712 k
t1lib x86_64 5.1.2-6.el6_2.1 base 160 k

Transaction Summary
================================================================================
Install 14 Package(s)
Upgrade 19 Package(s)

Total download size: 21 M

インストール後の確認

Remi公式サイトの最後の手順の動作確認を実行します。

php --version

すると、

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/ssh2.so' - /usr/lib64/php/modules/ssh2.so: undefined symbol: php_checkuid in Unknown on line 0
PHP 5.6.16 (cli) (built: Nov 26 2015 08:01:30)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

ssh2.soでエラーが…もうちょっと追加作業が発生しました。

ssh2でエラーへの対処

検索したところ、ssh2の再インストールで解決しそうです。
参考にしたページはこちら、

CentOS 6.4 php 5.4 ssh2.so error (/usr/lib64/php/modules/ssh2.so: undefined symbol: php_checkuid in Unknown on line 0)

ssh2.soのソースを取得します。

wget http://pecl.php.net/get/ssh2

ssh2というファイルがあると思います。実は、wgetする前に、ブラウザから上記ファイルをダウンロードしてまして、その時にファイル名が実際には「ssh2-0.12.tgz」ということは知っていましたので、気持ちの問題ですが、リネームしておきます。

mv ssh2 ssh2-0.12.tgz

そして解凍。

tar -zxvf ssh2-0.12.tgz

後はビルドするのみ。

cd ssh2-0.12
/usr/bin/phpize
./configure --with-ssh2 --with-php-config=/usr/bin/php-config
make
make install

結果は…

Installing shared extensions: /usr/lib64/php/modules/

うまくいったっぽい。

再度、動作確認コマンドを実行します。

php --version
php --modules

エラーが出なければPHPのアップグレードは完了です。Apacheを再起動しましょう。

/etc/init.d/httpd restart

おつかれさまでした。

コメントを残す

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