Zend_Session_SaveHandler_DbTable が有効なセッション ID を生成していませんか?
-
19-09-2019 - |
質問
私は現在、データベースベースのセッションを介して認証を永続化しようとしているところです。データベースを使用するように Zend_Session を設定しました。調べてみると、Zend はデータベースに値を書き込んでいます。ただし、これらのセッションの ID は PHPSESSID と一致しないようですが、Zend_Session に ID を返させると、一致する値が返されます。
したがって、私のDBには次のものがあります。
ID.....MODIFIED.......LIFETIME...DATA
344..1265640083.......1440.......BLAH
それでも、Zend Session 自体から ID を呼び出すと...
$id = Zend_Session::getId();
echo $id; // mbgspg2gvf1c3r9l7qpv6orgt4
Zend Session によって生成された ID は PHPSESSID の ID と一致する必要があると想定していますよね?
これが私のブートストラップです
$dbAdapter = $resource->getAdapter();//connection is tested and working
Zend_Registry::set("db", $dbAdapter);
$config = array(
'name' => 'sessions',
'primary' => 'id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime',
'db' => $dbAdapter
);
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
Zend_Session::start();
誰かがこれに光を当てることができれば、私は永遠に感謝します...
解決
うーん、当惑しています。テーブルの種類を InnoDB に変更したところ、機能するようになりました。
私の弁護では、メインのドキュメントでは InnoDB を指定していません。 http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html
一方、ここでは次のようになります。 http://framework.zend.com/wiki/display/ZFPROP/Zend_Session_SaveHandler_DbTable?showComments=false
それで直ったことを祈っています。おそらく私の Apache のローカルバグでしょうか?
所属していません StackOverflow