1

そこで、Zend_Toolを使用してサイトテンプレートを作成し、これらのパラメーターをapplication.iniに追加しました。

resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "session"
resources.session.saveHandler.options.primary.session_id = "session_id"
resources.session.saveHandler.options.primary.save_path = "save_path"
resources.session.saveHandler.options.primary.name = "name"
resources.session.saveHandler.options.primaryAssignment.sessionId = "sessionId"
resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.sessionName = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"

問題は、セッションリソースまたはsaveHandlerが呼び出されていることにあるようには見えませんが、代わりに、PHP/Zendがデータベースでセッションをセットアップしようとさえしていないようです。

セッションリソースに必要なオプションを削除し、さまざまなZendクラスにチェックを入れて、それらが実行されているかどうかを確認しない限り、エラーは発生しません。彼らはそうです。

私の現在の推測では、Zend_Sessionがデフォルトのセッション処理をオーバーライドできるようにするには、php.iniで何かを変更する必要があります。このテストにはZendServerを使用しています。

反応

session.auto_startを確認したところ、0に設定されていました。

また、データベースハンドラーを使用せずにテストし、代わりにパスを変更しようとしましたが、これも失敗しました。

セットアップでわかることから、Zend_Session_SaveHandler_DbTable :: __constructが呼び出され、resources.db設定がセッションの上にあり、他のすべてに対して機能しています。

現在、saveHandlers.optionsデータの設定が正しくないことに加えて、saveHandlerの設定が正しくないために発生したエラーに関連するStackOverflowの他の投稿を見てきました。

上で述べたように、セッション処理のために渡された関数を呼び出さないPHPと関係があると思います。独自のセッション管理を設定する場合は、これらの呼び出しに接続して、各状態で実行されるコールバック関数を提供できます(open close read writeなど)。

セッション管理を変更できるようにするために有効にする必要がある特定の設定があるかどうかを知るには、PHP.iniの設定について十分に知りません。

4

2 に答える 2

2

セッションにDBハンドラーを使用する場合は、セッションリソースの前にDBが初期化されていることを確認する必要があります。db接続は、ブートストラップ中にアダプターとしてハンドラーに設定されます。これで問題が解決しない場合は、セッションハンドラを手動で設定してみてください。また、PHP.iniで無効になっていることを確認してください。session.auto_start

于 2010-03-02T07:52:40.347 に答える
2

ブートストラップでこれを試してください:

protected function _initForceSession()
{
    $this
            ->bootstrap('db')
            ->bootstrap('session');
}

また、パッチをZend_Sessionに適用して、セッションがすでに開始されており、savehandlerを変更できないことを確認することもできます:http://framework.zend.com/issues/browse/ZF-7915。すべての詳細を覚えているわけではありませんが、これらのコンポーネントにはいくつかの非互換性があります...

于 2010-03-02T08:54:50.783 に答える