[php][PEAR]php4.3.2でPEAR::Authを使うとハマる件

Written by uechoco 9月 13
このエントリをはてなブックマークに追加[php][PEAR]php4.3.2でPEAR::Authを使うとハマる件のはてなブックマーク被リンク数このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

バイト中でのお話。

ある案件で(私の案件ではありませんが)テストサーバー上で動いていたプログラムをクライアントの本番サーバーに移行したら、管理画面へのログインができなくなってしまいました。

プログラム自体は独自のフレーワークで、車輪の再開発をしたくないので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って思わぬ孔明が潜んでいますね。

このエントリをはてなブックマークに追加[php][PEAR]php4.3.2でPEAR::Authを使うとハマる件のはてなブックマーク被リンク数このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

No Responses to “[php][PEAR]php4.3.2でPEAR::Authを使うとハマる件”

コメントはまだありません。

Comments RSS rss うえちょこ@ぼろぐ TrackBack Identifier URI rss うえちょこ@ぼろぐ

コメントをどうぞ