だいこんの日々2

軸足をtwitterとfacebookに移しつつも、技術的な話はここに書いていきます。

EthnaでPEAR::Auth 1.3.0 その2

問題なく動いていると思ったら、問題ありでした…(ノд・。)
PEAR::Auth 1.3.0から、認証時にsession_regenerate_idを呼んでくれちゃう仕様になった模様。この関数を呼ばれると、Ethnaがせっかく長いセッションID(64文字)を生成してくれているのに、PHPの設定に従って短く(40文字)なってしまう。
まぁ、それだけなら以前作った関数で何とかなるはずだったんだけど、session_regenerate_idの後にsession_destroyするとエラーになってしまう。PHPのバグか?これではセッションIDを変更できないよ〜。
スマートな解決方法を数時間模索した結果、PEAR::AuthをextendsしたクラスでsetAuthをオーバーライドした。ちょっと虚しい。