Я использую Zend_Session_SaveHandler_DbTable для хранения моих сеансов в базе данных. У меня есть следующее в моем application.ini
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 (true), что приведет к ошибке:
Неустранимая ошибка: необработанное исключение 'Zend_Session_Exception' с сообщением 'сессия уже была запущена session.auto-start или session_start ()' в C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ Session.php: 462 Трассировка стека: # 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 в C: \ Program Files ( x86) \ Zend \ Ap ache2 \ htdocs \ myapp \ library \ Zend \ Session.php в строке 462
, поскольку Zend_Session_SaveHandler_DbTable уже начал сеанс. Я думал, что Zend_Session_SaveHandler_DbTable автоматически заставит Zend_Auth хранить информацию о сеансе в базе данных.
Есть что-то, что я здесь упускаю или неправильно настроил?