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をもって入ってきたのが以前と同じ接続元かどうか判別して違ったらセッション破棄して新しいセッションにする」みたいなことをやろうとするとセッションの再スタートが必要になってくる

参考