yum updateでPHPを5.3から5.4にアップデート

ちょっと前にしました。

CentOS6はそのままだと5.3をインストールするようです。少なくともさくらVPSで何も考えずにやると5.3.1が入りました。
さすがにそれはどうかと思い、今後のことも考えると5.4系にアップデートしておいた方が良いと判断し、思い切ってやってみることにしました。

インストール時もyumで入れたので、アップデートもyumで。

互換性の確認

PHP: PHP 5.3.x から PHP 5.4.x への移行 – Manual

まずはここで現在のコード・php.iniの設定に問題ないかを確認します。
結果的に言うと、コーディングにおいては参照渡しの変更で1箇所引っかかった所がありましたが、それ以外は基本問題ありませんでした。

他、MySQLの設定で大事な変更があることを知りました。
MySQLもCentOS6のデフォルトだと5.1なのですが、yumでPHP5.4にアップデートすると、ついでにMySQLも5.5にアップデートしてくれるようです。
その際、my.cnfの設定で気をつけないとMySQLが起動しなくなってしまう記述があります。

default-character-set=utf8

わりと色んな解説記事で、default-character-setを設定するよう書いていたりするようなのですが、これはMySQL5.5では廃止されており、この記述がそのままだと起動しなくなってしまうそうです。

yum で間違って MySQL を 5.5系にアップグレードしたら MySQL が起動しなくなった話 | /home/by-natures/*

ここは、代わりに character-set-server=utf8 とするのが正しいとのことです。以前ここで紹介した設定記事も、default-character-setを書くようになっていたため、ここのMySQLもそうなっていました。
ということで、my.cnfも修正しました。別に5.1でcharacter-set-serverとしても同じ動作になるようなので、最初からこちらを書くようにした方がいいですね。

アップデートの準備

デフォルトでは最新版のPHPを探しに行けないので、リポジトリを追加する必要があります。

yumでphpアップデート – 恥知らずのウェブエンジニア

アップデートの作業自体はほぼこちらの通りにやりました。

//リポジトリの追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

//php5.4にアップデートされることを確認。
yum --enablerepo=epel,remi,rpmforge info php

//アップデート実行
yum --enablerepo=epel,remi,rpmforge update php

2013/7/27時点ではPHP5.4.17が入りました。
アップデート実行時にはこんなログがあり、関連するパッケージが一緒にアップデートされていることがわかります。

Updating:
 php                x86_64     5.4.17-2.el6.remi                 remi     2.7 M
Installing for dependencies:
 compat-mysql51     x86_64     5.1.54-1.el6.remi                 remi     1.4 M
 libtool-ltdl       x86_64     2.2.6-15.5.el6                    base      44 k
 t1lib              x86_64     5.1.2-6.el6_2.1                   base     160 k
Updating for dependencies:
 mysql              x86_64     5.5.32-1.el6.remi                 remi     5.7 M
 mysql-libs         x86_64     5.5.32-1.el6.remi                 remi     774 k
 mysql-server       x86_64     5.5.32-1.el6.remi                 remi      10 M
 php-cli            x86_64     5.4.17-2.el6.remi                 remi     2.6 M
 php-common         x86_64     5.4.17-2.el6.remi                 remi     922 k
 php-gd             x86_64     5.4.17-2.el6.remi                 remi     141 k
 php-mbstring       x86_64     5.4.17-2.el6.remi                 remi     942 k
 php-mcrypt         x86_64     5.4.17-2.el6.remi                 remi      49 k
 php-mysql          x86_64     5.4.17-2.el6.remi                 remi     134 k
 php-pdo            x86_64     5.4.17-2.el6.remi                 remi     118 k
 php-pecl-apc       x86_64     3.1.15-0.3.svn329913.el6.remi     remi     142 k

Transaction Summary
================================================================================
Install       3 Package(s)
Upgrade      12 Package(s)

Total download size: 26 M

完了後、一旦シャットダウンしてからサーバーを再起動させます。

すると、iconDecotterのOAuth認証の部分でリダイレクトループが発生するように。
延々とセッションIDが変わりながらリダイレクトしているので、これはセッションの保存に何かあるなと。
エラーログを調べてみるとこんな感じのエラーが大量に発生していました。

[client xxx.xxx.xxx.xxx] PHP Warning: session_start(): open(/[PHPのセッションを保存するパス:session.save_path]/sess_XXXXXXXX, O_RDWR) failed: Permission denied (13) in ~

PHPのセッション保存が、書き込み権限が無くて出来ませんでした、というエラーです。
これは、PHPのアップデート時に何故かこのディレクトリの権限が775に変更されたようで、これをchmodで777に変更してあげる必要があったようです。

EZ-NET: PHP のセッション処理でエラーになる

chmod 777 /[PHPのセッションを保存するパス:session.save_path]

これで正常にセッションが保存されるようになりました。

改めて、php -v で確認してみても、正常にPHP5.4.17がインストールされているようで、WEBの動作上にも特におかしい所は無くなったので、無事アップデート完了となりました。

コメント

  1. […] yum updateでPHPを5.3から5.4にアップデート | iconDecotter-Log. […]

  2. […] アップデートしたいと思います。php5.4はこれまでとちょっとちがっていろいろ機能が追加されてますよ。 yum updateでPHPを5.3から5.4にアップデート まずはリポジトリの拡張しないとだめ。 […]

  3. […] 参考記事 Logとか載ってて丁寧だったのでコチラの記事で5.4へバージョンアップしました。 qiitaの方でも紹介してるので、こっちのがもしかしたら良いかも知れませんね。 […]

  4. […] yum updateでPHPを5.3から5.4にアップデート | iconDecotter-Log […]

  5. […] 参照記事:yum updateでPHPを5.3から5.4にアップデート […]

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