session_set_save_handler のバグらしいですよ。

わーい、PHP のバカー。

てか、オレ、ちゃんと調べろ。

ってことで、備忘録も込みでエントリ。

今、ウチの会社のお仕事は思いっきり Web なわけで、言語は PHP なわけで、フレームワークEthna なわけで。

んで、セッションを使っている時に問題が起きたわけで。

どんな問題かっつーと、認証とかでログインさせる際に透過ログインを採用しとるんですが、これがどうにも巧く動かないケースが多い。

しかもリダイレクトするとき限定で駄目っぽい。

んで、ウチはサーバの冗長化してるんで、ローカルファイルによるセッションの管理は NG なわけです。

つーことは、memcached とか db とかに書く必要がある、と。

# まぁ、nfs とかって手もあるけどね。

で、ウチは db を採用しました。

ってことは当然 session_set_save_handler 関数を用いて、db に書き込む処理を実装するわけですよ。

そこで問題が発生したわけですな。

結論から言うと、session_set_save_handler 関数はセッション名 (session_name() で取得・設定できるアレね。) が PHPSESSID 固定じゃないと駄目らしいんですわ。

詳しく調べたわけじゃないから何とも言えないけど、どうも destory の時に Fatal を起こす事があるらしいです。

前任者の人も Fatal 起きるかもー、みたいなことをコメントに残してくれていました。

とりあえず急ぎで修正しておこう。

これで解決すると良いなぁ…。

あ、詳しくは、http://hain.jp/index.php/tech-j/2006/08/11/session_set_save_handler_php を参照のこと。

ぎじゅっやさん、ありがとうございました!!w