Zend framework 通过Zend_应用程序配置Zend_会话

Zend framework 通过Zend_应用程序配置Zend_会话,zend-framework,zend-application,Zend Framework,Zend Application,因此,我使用Zend_工具构建了一个站点模板,并将这些参数添加到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" r

因此,我使用Zend_工具构建了一个站点模板,并将这些参数添加到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_会话能够覆盖默认会话处理。我正在使用Zend Server进行此测试

回应

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

我还测试了它,没有使用任何数据库处理程序,只是尝试更改路径,但也失败了

从我的设置可以看出,Zend_Session_SaveHandler_DbTable::__构造正在被调用,我的resources.db设置高于我的Session,并且适用于所有其他设置

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

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


我只是对PHP.ini设置了解不够,不知道是否需要启用特定的设置才能修改会话管理

在会话中使用DB处理程序时,必须:。数据库连接将在引导过程中作为适配器设置到处理程序。如果这不能解决问题,请尝试设置,并且在会话中使用DB处理程序时,必须设置。数据库连接将在引导过程中作为适配器设置到处理程序。如果这不能解决问题,请尝试设置,并在引导中尝试以下操作:

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

您还可以尝试将我的修补程序应用于Zend_会话,以查看会话已启动,并且无法更改savehandler:。我不记得所有细节,但这些组件中存在一些不兼容…

在引导中尝试以下方法:

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

您还可以尝试将我的修补程序应用于Zend_会话,以查看会话已启动,并且无法更改savehandler:。我不记得所有细节,但这些组件中存在一些不兼容…

请参见上面的响应。提要我认为这与php允许您为会话管理钩住的回调钩子有关,以及由于某种原因,它们可能没有被使用。IE打开关闭读写。@Ballsacian1不知道,抱歉。您可以尝试使用Zend_Debugger或XDebug逐步完成引导过程,以查看哪里出错。有关响应,请参见上文。提要我认为这与php允许您为会话管理钩住的回调钩子有关,以及由于某种原因,它们可能没有被使用。IE打开关闭读写。@Ballsacian1不知道,抱歉。您可以尝试使用Zend_Debugger或XDebug逐步完成引导过程,以查看哪里出了问题。是的,出于某种原因,即使在会话_处理程序之前创建了数据库,并且更改了它们的顺序导致了数据库异常,未将_initForceSession包含在引导程序中导致修改后的Session.php文件将Session标记为已设置。我很惊讶还没有检查会话是否已创建。是的,出于某种原因,尽管db是在会话处理程序之前创建的,并且更改它们的顺序导致db异常,未将_initForceSession包含在引导程序中导致修改后的Session.php文件将Session标记为已设置。我很惊讶还没有检查会话是否已创建。