ちょっと前にしました。
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を探しに行けないので、リポジトリを追加する必要があります。
アップデートの作業自体はほぼこちらの通りにやりました。
//リポジトリの追加 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に変更してあげる必要があったようです。
chmod 777 /[PHPのセッションを保存するパス:session.save_path]
これで正常にセッションが保存されるようになりました。
改めて、php -v で確認してみても、正常にPHP5.4.17がインストールされているようで、WEBの動作上にも特におかしい所は無くなったので、無事アップデート完了となりました。
コメント
[…] yum updateでPHPを5.3から5.4にアップデート | iconDecotter-Log. […]
[…] アップデートしたいと思います。php5.4はこれまでとちょっとちがっていろいろ機能が追加されてますよ。 yum updateでPHPを5.3から5.4にアップデート まずはリポジトリの拡張しないとだめ。 […]
[…] 参考記事 Logとか載ってて丁寧だったのでコチラの記事で5.4へバージョンアップしました。 qiitaの方でも紹介してるので、こっちのがもしかしたら良いかも知れませんね。 […]
[…] yum updateでPHPを5.3から5.4にアップデート | iconDecotter-Log […]
[…] 参照記事:yum updateでPHPを5.3から5.4にアップデート […]