通过Zend_Application配置Zend_Session

时间:2010-03-02 05:19:48

标签: zend-framework zend-application

所以我使用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 :: __构造,并且我的resources.db设置在我的会话之上,并且正在为其他一切工作。

除了目前我还没有正确设置saveHandlers.options数据,我在StackOverflow上看到了其他帖子,这些帖子与badHandler配置错误有关。

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

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

2 个答案:

答案 0 :(得分:2)

对会话使用数据库处理程序时,必须make sure the DB is initialized before the Session Resource。在bootstrap期间,db连接将作为适配器设置为处理程序。如果这不能解决问题,请尝试设置Session handler manuallymake sure session.auto_start is disabled in PHP.ini

答案 1 :(得分:2)

在你的引导程序中试试这个:

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

您还可以尝试将我的补丁应用于Zend_Session,以查看该会话已经启动,并且您无法更改savehandler:http://framework.zend.com/issues/browse/ZF-7915。我不记得所有细节,但这些组件有一些不兼容性......