PHPセッション周りのバグ
PHPで独自のセッションハンドラを使っているときの問題点
session_set_save_handler();
↓
session_start();
↓
session_destroy();
↓
session_start();
とやるとエラーがでる
PHP Fatal error: session_start() [function.session-start]: Failed to initialize storage module
回避方法はsession_destroy()したあとにもう一度session_set_save_handler()をしてあげるとちゃんと動作する
PHP 5.3ではバグフィックスされているらしい
普通にセッションスタートするだけならこんなこと起きないだろうけども「そのセッションIDをもって入ってきたのが以前と同じ接続元かどうか判別して違ったらセッション破棄して新しいセッションにする」みたいなことをやろうとするとセッションの再スタートが必要になってくる
参考
-
- Bug #32330 session_destroy, "Failed to initialize storage module", custom session handler
-
- PHP5.3未満でのsession_set_save_handler()のバグメモ - 自由な人間(デジタル風味)