代码之家  ›  专栏  ›  技术社区  ›  Ballsacian1

通过Zend\u应用程序配置Zend\u会话

  •  1
  • Ballsacian1  · 技术社区  · 14 年前

    因此,我使用Zendèu工具构建了一个站点模板,并将这些参数添加到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甚至都没有尝试在数据库中设置会话。

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

    我检查了session.auto\u start并将其设置为0。

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

    从我的设置中可以看出,Zend\u Session\u SaveHandler\u DbTable::\u构造正在被调用,而我的resources.db设置在我的Session之上,并且对其他所有设置都有效。

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

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

    2 回复  |  直到 14 年前
        1
  •  2
  •   Vladimir Mihailenco    14 年前

    在引导程序中尝试以下操作:

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

    http://framework.zend.com/issues/browse/ZF-7915 . 我不记得所有的细节,但有一些不兼容的这些组件。。。

        2
  •  2
  •   Gordon Haim Evgi    14 年前

    在会话中使用DB处理程序时,必须 make sure the DB is initialized before the Session Resource . db连接将在引导过程中作为适配器设置到处理程序。如果这不能解决问题,请尝试设置 Session handler manually 还有 make sure session.auto_start is disabled in PHP.ini