我正在使用Zend_Session_SaveHandler_DbTable將我的會話存儲在數據庫中。我在我的application.ini中有以下內容無法在Zend_Application中使用Zend_Auth和Zend_Session_SaveHandler_DbTable
resources.session.save_path = APPLICATION_PATH "/../data/sessions"
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.session_id = "sessionId"
resources.session.saveHandler.options.primaryAssignment.save_path = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.name = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"
resources.session.saveHandler.options.userIdColumn = "user_id"
會話似乎在數據庫中正確保存。
的問題是,當我叫Zend_Auth的::的getInstance() - > hasIdentity()的應用程序,它最終將調用過Zend_Session :: start(真),這將導致錯誤:
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'session has already been started by session.auto-start or session_start()' in C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\Session.php:462 Stack trace: #0 C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\Session\Namespace.php(143): Zend_Session::start(true) #1 C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\Auth\Storage\Session.php(87): Zend_Session_Namespace->__construct('Zend_Auth') #2 C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\Auth.php(91): Zend_Auth_Storage_Session->__construct() #3 C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\Auth.php(141): Zend_Auth->getStorage() #4 C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\application\modules\default\views\scripts\layout.phtml(29): Zend_Auth->hasIdentity() #5 C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\View.php(108): include('C:\Prog in C:\Program Files (x86)\Zend\Apache2\htdocs\myapp\library\Zend\Session.php on line 462
因爲Zend_Session_SaveHandler_DbTable已經啓動了會話。我雖然Zend_Session_SaveHandler_DbTable會自動讓Zend_Auth將會話信息存儲在數據庫中。
有什麼我在這裏丟失或沒有正確配置?
待辦事項你可以在任何地方調用'Zend_Session :: start'嗎?或者這是由一個ZF類完成的? – 2010-09-18 15:24:07
我不會在任何地方手動調用它。它被Zend_Auth在獲取會話存儲時調用 – Christopher 2010-09-18 18:20:48
錯誤消息意味着ZF之外的某些東西正在啓動會話 - 您可以檢查phpinfo()以查看是否有session.auto-start設置爲on,或者您是否擁有應用中可能使用會話的任何其他PHP腳本? – 2010-09-18 20:15:15