Zend Frameworkのマニュアルに一部誤記がある
対象
- Zend FrameworkをMVCフレームワークとして使っている
- セッション情報の管理をZend Frameworkを用いている
- セッション情報をDbへ保存しようと考えている
- application.ini でセッションについての設定を行っている
問題の概要
セッション情報をDbへ保存しようとして、設定したものが問題で、セッションがスタートしないことがある。
特に問題となるケースが、application.iniへの設定が間違えているときに、セッションがスタートせず、不明なエラーとなってしまうことが確認されている。(保存先を見つけられない等の要因により発生するらしい)
Fatal error: Exception thrown without a stack frame in Unknown on line 0
問題のある設定(application.ini)
resources.session.save_path = APPLICATION_PATH "/../data/session" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000 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"
正しい設定(application.ini)
resources.session.save_path = APPLICATION_PATH "/../data/session" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000 resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable" resources.session.saveHandler.options.name = "session" resources.session.saveHandler.options.primary.0 = "session_id" resources.session.saveHandler.options.primary.1 = "save_path" resources.session.saveHandler.options.primary.2 = "name" resources.session.saveHandler.options.primaryAssignment.0 = "sessionId" resources.session.saveHandler.options.primaryAssignment.1 = "sessionSavePath" resources.session.saveHandler.options.primaryAssignment.2 = "sessionName" resources.session.saveHandler.options.modifiedColumn = "modified" resources.session.saveHandler.options.dataColumn = "session_data" resources.session.saveHandler.options.lifetimeColumn = "lifetime"
参考資料
- http://framework.zend.com/manual/ja/zend.session.savehandler.dbtable.html パラメータについて、ハッシュではなく配列で扱っている点に注目
- Issue - Zend Framework この不具合については時期リリース10.1のマニュアルで解消されるそうです