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 类中放置检查以查看它们是否正在运行,否则我不会收到任何错误;他们是。

我目前的猜测是我需要更改 php.ini 中的某些内容,以便 Zend_Session 能够覆盖默认会话处理。我正在使用 Zend Server 进行此测试。

回应

我检查了 session.auto_start 并将其设置为 0。

我还通过不使用任何数据库处理程序来测试它,而只是尝试更改也失败的路径。

从我的设置可以看出, Zend_Session_SaveHandler_DbTable::__construct 正在被调用,并且我的 resources.db 设置在我的会话之上,并且正在为其他一切工作。

除此之外,目前我的 saveHandlers.options 数据设置不正确,并且我在 StackOverflow 上看到了其他帖子,这些帖子与错误的 saveHandler 配置有关。

正如我上面所说,我认为这与 PHP 没有调用传递的函数进行会话处理有关。我知道如果您想设置自己的会话管理,您可以连接到这些调用并提供要在每个状态上执行的回调函数(打开关闭读写等)。

我只是对 PHP.ini 设置知之甚少,无法知道是否需要启用特定设置以允许修改会话管理。

4

2 回答 2

2

When using the DB handler for sessions, you have to make sure the DB is initialized before the Session Resource. The db connection will be set to the handler as adapter during bootstrap. If this does not solve the issue, try setting up the Session handler manually and also make sure session.auto_start is disabled in PHP.ini

于 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 回答