所以我使用 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 设置知之甚少,无法知道是否需要启用特定设置以允许修改会话管理。