[cakephp2.x]セッションの保存先をDBするときにハマった件

表題の件。
cakephp2でセッションの保存先をDBにする場合。
core.phpでSessionの設定を下記に変更して

Configure::write('Session', array(
//'defaults' => 'php'
'defaults' => 'database',
'cookie' => CAKEPHP',
'timeout' => 3*60, //ソース見た限り分を指定 3時間
));

defaultで設定されているDBに以下のようなテーブルを作成する。

CREATE TABLE IF NOT EXISTS `cake_sessions` (
`id` varchar(255) NOT NULL DEFAULT '',
`data` text NOT NULL,
`expires` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

これでOKなんだけど、諸般の事情でdefaultでないDBにcake_sessionsテーブルを置きたい場合にちょっとはまった。
一応、下記のように保存するモデルを設定することができる。
Configure::write(‘Session’, array(
//’defaults’ => ‘php’
‘defaults’ => ‘database’,
‘cookie’ => CAKEPHP’,
‘timeout’ => 3*60, // 3時間
‘handler’ => array(
‘model’=>’CakeSession’
)
));
変更がなければ(defaultで設定したDBにテーブルを置く場合は),modelにcake_sessionsのファイルはいらないが、変える場合は作成しなければならないようで
model/CakeSession.phpを作成した。が、なぜかダメ。勝手にdefaultのDBに接続しに行っちゃうようです。ライブラリをざっと見てみたけど原因わからず。

結論
モデル名をCakeMySession.phpに、コンフィグレーションも’model’=>’CakeMySession’に変更することでうまくいきました。
デフォルトの名前だと処理がショートカットされているのかな?

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