[php][PEAR]php4.3.2でPEAR::Authを使うとハマる件
バイト中でのお話。
ある案件で(私の案件ではありませんが)テストサーバー上で動いていたプログラムをクライアントの本番サーバーに移行したら、管理画面へのログインができなくなってしまいました。
プログラム自体は独自のフレーワークで、車輪の再開発をしたくないのでPEARからAuthやらDB_DataObjectやらHTML_QuickFormやらをひっぱってきたもので、特定の種類の案件に対してかなりの効率でシステムを開発できるようなフレームワークです。
ログインができない原因はどうやらセッションが勝手に切れてしまうという話。テストサーバーと本番のphp.iniが結構違っていたからそれを揃えてみてもだめ。ちなみにログインにはPEAR::Authが使われています。
適当にグーグル先生に「PEAR Auth セッション」と投げてみたら、
PEAR::Authの認証で別画面に移動すると認証されない – PHPプロ!Q&A掲示板
http://www.phppro.jp/qa/153
ってのを発見。そのなかから、
PHPのバージョンが4.3.2であった為、Auth::setAuth();の
session_regenerate_id(true);
が原因で正常に動作できていませんでした。
って書き込みを発見。
私「phpのバージョンは4.3.いくつでしたっけ?」
答「4.3.2」
これだーっ。
ピンポイントでphpのバージョンが古かったというオチ。ちなみに、session_regenerate_id()関数はphp4.3.2から初登場し、php4.3.3からクッキー周りの修正が入った関数。たしかに、PEAR::AuthのAuth.phpないにもsession_regenerate_id()関数のところにphp4.3.3以降じゃないとだめーみたいな雰囲気のコメントもあるし。英語だから読んでないけど。
解決策としては、phpのバージョンを上げることが大正解なのですが、ビジネスサーバーだとそうやすやすと上げられないのも現状。なので、応急処置はPEAR::AuthのAuth.php内の
session_regenerate_id(true);
を
session_regenerate_id(false);
にする。phpって思わぬ孔明が潜んでいますね。
No Responses to “[php][PEAR]php4.3.2でPEAR::Authを使うとハマる件”
コメントはまだありません。
Comments RSS
TrackBack Identifier URI
コメントをどうぞ
