CentOS6 PHP5.4でSession Storeにredisを使う

PHP

PHPセッションをNode.jsと共有するために、Redisにセッションを保存するようにしてみました。

CentOS6でIUSリポジトリからPHP 5.4をインストールしています。
redisとPHP redis拡張をインストールします。

 yum install redis php54-pecl-redis

php.iniのセッション設定を変更します。

 vim /etc/php.ini
 [Session]
 session.save_handler = redis
 session.save_path = "tcp://localhost:6379"

extension=redis.soでPHP redis拡張を有効にしていないと下記エラーが発生します。

 Error message: session_start() [function.session-start]: Cannot find save handler 'redis' - session startup failed

redis-cliでセッション処理状況を確認することができます。

 # redis-cli
 redis 127.0.0.1:6379> monitor
 OK
 1405429054.304961 "monitor"
 1405429069.931558 "GET" "PHPREDIS_SESSION:7h5g14scfubbqh3epdbqilc761"
 1405429069.945525 "SETEX" "PHPREDIS_SESSION:7h5g14scfubbqh3epdbqilc761" "1440" "..."

CentOS 7 PHPのセッション保存先にredisを指定できない

Linuxサーバー

CentOS 7でPHPのセッション保存先をredisに変更できずにはまりました。

通常はphp.iniで下記のように設定するとセッション保存先をredisにできます。

 session.save_handler = redis
 session.save_path = "tcp://localhost:6379"

ところが、CentOS 7でApache、PHPをyumでインストールしているとセッション保存先がredisに切り替わりません。
phpinfo()を確認してみると、session.save_handlerがMaster Valueではredisになりますが、Local Valueではfileのままになっています。

どこでsession.save_handlerがfileに指定されているか調査したところ、/etc/httpd/conf.d/php.confに下記記述がありました。

 #
 # Apache specific PHP configuration options
 # those can be override in each configured vhost
 #
 php_value session.save_handler "files"
 php_value session.save_path    "/var/lib/php/session"

この指定を書き換えるかコメントアウトする等の対応をすれば、セッション保存先をredisに切り替えることができます。

ちなみに/etc/httpd/conf.d/php.confはCentOS7のphpのrpmに含まれています。

 $ rpm -qf /etc/httpd/conf.d/php.conf
 php-5.4.16-36.el7_1.x86_64

CentOS 5.4でyum-priorityがyumでインストールできない

Linuxサーバー

11月2日現在ではCentOS 5.4でyum install yum-prioritiesとしてもインストールできません。

CentOS5.4のリポジトリから漏れてしまっているだけで、CentOS5.3のものをインストールすれば良いようです。

 # wget -c http://mirror.centos.org/centos-5/5.3/os/i386/CentOS/yum-priorities-1.1.16-13.el5.centos.noarch.rpm
 # rpm -ivh yum-priorities-1.1.16-13.el5.centos.noarch.rpm

または

# rpm -ivh http://mirror.centos.org/centos-5/5.3/os/i386/CentOS/yum-priorities-1.1.16-13.el5.centos.noarch.rpm

http://lists.centos.org/pipermail/centos/2009-October/084246.html

(追記)
11月12日現在では、[extras]リポジトリに追加されていました。
yumの設定がデフォルトのままであれば、5.3までと同様にインストールできるようになっています。