セッションについて
セッションをファイル保存でやらせたいと思った。で、core.phpには
/** * If set to false, session would not automatically be started. */ define('AUTO_SESSION', true);
とデフォルトでなっていたし、ブラウザのヘッダーを見てても(LiveHTTPHeaders)、ちゃんとCookieを使ってセッションIDを送ってるっぽい。
ただ、
(app)/tmp/sessions/
に物理ファイルが作成されていない。
なんでだろー?と思ってsession.phpを読んでいたら、appのtmp/session/に保存するようにするセッションハンドラ(core.phpでCAKE_SESSION_SAVE定数で指定するやつ)は、'cake'としていすることが分かった。
で、core.phpはデフォルトでは'php'になっていて、こちらはphp.iniレベルの設定を素直に使うようになっている。
以下は1.1.19.6305でのsession.phpを調べ、CAKE_SESSION_SAVE定数の'cake'と'php'とでどうPHP.ini設定が変わるのかをまとめたもの。
'cake' でini_set()される値
session.use_trans_sid | 0 |
---|---|
url_rewriter.tags | '' |
session.serialize_handler | 'php' |
session.use_cookies | 1 |
session.name | CAKE_SESSION_COOKIE |
session.cookie_lifetime | $this->cookieLifeTime |
session.cookie_path | $this->path |
session.auto_start | 0 |
session.save_path | TMP . 'sessions' |
'php' でini_set()される値
session.use_trans_sid | 0 |
---|---|
session.name | CAKE_SESSION_COOKIE |
session.cookie_lifetime | $this->cookieLifeTime |
session.cookie_path | $this->path |
小まとめ
つまりCAKE_SESSION_SAVE定数の'php'が意味するところとは、おおよそのパラメータをphp.ini設定でカバーしますよ、という感じなのだろう。一方の'cake'が意味するところは、cakeが想定するパラメータにいろいろと調整しちゃいますよ、という感じなのだろう。
もちろん場合によっては、'php'も'cake'でもどちらも対応できないphp.ini設定が必要となる場合もあるかもしれない。use_trans_sidがやむを得ず1にする場合や、そのほかのphp.ini設定で何らかの、デフォルトの'cake'や'php'では対応しきれないシーンがあるかもしれない。
そうした場合でも、一応カスタマイズの余地は残されているので、そうした場合にはsession.phpを読むことで、どのようなファイルを作ればよいか分かることだろう。