Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Zend_Session_SaveHandler_DbTable - dziwny problem
Forum PHP.pl > Forum > PHP > Frameworki
agmakonts
Dziś próbowałem skłonić zenda by pozwolił mi używać bazy do sesji ale on jednak nie chce.

Znalazłem gdzieś (chyba na forum) config który ponoć działa więc wkleiłem i pozmieniałam informacje:
  1. resources.session.save_path = APPLICATION_PATH "/../data/sessions"
  2. resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
  3. resources.session.saveHandler.options.name = "jm_sessions"
  4. resources.session.saveHandler.options.primary.session_id = "session_id"
  5. resources.session.saveHandler.options.primary.save_path = "save_path"
  6. resources.session.saveHandler.options.primary.name = "name"
  7. resources.session.saveHandler.options.primaryAssignment.sessionId = "session_Id"
  8. resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "save_path"
  9. resources.session.saveHandler.options.primaryAssignment.sessionName = "name"
  10. resources.session.saveHandler.options.modifiedColumn = "modified"
  11. resources.session.saveHandler.options.dataColumn = "session_data"
  12. resources.session.saveHandler.options.lifetimeColumn = "lifetime"
  13.  


Dostawałem jednak błąd że session_id, save_path to nieznane ideksy jakieś tablicy. Wtedy doczytałem (nie wiem czy dobrze bo to dziwne) że jeszcze potrzebny jest config w bootstrapie więc wklepałem:

  1. protected function _initCoreSession()
  2. {
  3.  
  4. $config = array(
  5.  
  6. 'name' => 'jm_sessions',
  7. 'primary' => array(
  8.  
  9. 'session_id',
  10. 'save_path',
  11. 'name'
  12. ),
  13. 'primaryAssignment' => array(
  14.  
  15. 'sessionId',
  16. 'sessionSavePath',
  17. 'sessionName'
  18. ),
  19. 'modifiedColumn' => 'modified',
  20. 'dataColumn' => 'session_data',
  21. 'lifetimeColumn' => 'lifetime'
  22. );
  23.  
  24. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  25. Zend_Session::start();
  26. }
  27.  


Ale teraz odstaje komunikat że "Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for Zend_Session_SaveHandler_DbTable' "

Połączenie z bazą i tabela z sesjami jest w 100% ok.
melkorm
Config wystarczy Tobie ten w bootstrapie.

Co do wyjątku, to musisz mieć przed uruchomieniem tego ustawiony defaultowy adapter bazy danych, lub przekazać go w configu.

  1. Zend_Db_Table_Abstract::setDefaultAdapter($db);
agmakonts
w configu mam resources.db.isDefaultTableAdapter = true
luki100011
a nie chodzi czasami o kolejność, najpierw musi "wystartować połączenie" z bazą danych a później sesje.
agmakonts
Wydawało mi się że rzeczy opisane w application.ini startują najpierw a tam połączenia z bazą jest nad ustawianiami sesjii
melkorm
  1. rotected function _initCoreSession()
  2. {
  3. $this->bootstrap('db');
  4. /*
  5. reszta kodu
  6. */
  7. }
agmakonts
Dzięki wielkie, załapało w końcu smile.gif

A tak to serio nie ma siły by to trzymać w ini?
melkorm
Kod
resources.session.saveHandler.options.primaryAssignment.sessionId = "session_Id"


  1. 'primaryAssignment' => array(
  2.  
  3. 'sessionId',
  4. 'sessionSavePath',
  5. 'sessionName'
  6. ),


to w końcu "sessionId" czy "session_Id" ?
agmakonts
jedno tu wkleiłem przed zmianami, teraz jest tak samo tu i tu, z bootstrapa łazi z ini pokazuje że index nieznany..... a z resztą, cały error

Kod
An error occurred
Application error
Exception information:

Message: Zend_Session::start() - C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(Line:896): Error #8 Undefined offset: 1 Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(Line:896): Error #8 Undefined offset: 1 Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:528): Error #8 Undefined index: session_id Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:539): Error #8 Undefined index: session_id Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:528): Error #8 Undefined index: save_path Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:539): Error #8 Undefined index: save_path Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:528): Error #8 Undefined index: name Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:539): Error #8 Undefined index: name Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(Line:896): Error #8 Undefined offset: 1 Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(Line:896): Error #8 Undefined offset: 1 Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(Line:896): Error #8 Undefined offset: 1 Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(Line:896): Error #8 Undefined offset: 1 Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:528): Error #8 Undefined index: session_id Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:539): Error #8 Undefined index: session_id Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:528): Error #8 Undefined index: save_path Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:539): Error #8 Undefined index: save_path Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:528): Error #8 Undefined index: name Array C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\SaveHandler\DbTable.php(Line:539): Error #8 Undefined index: name Array
Stack trace:

#0 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Session\Namespace.php(143): Zend_Session::start(true)
#1 C:\Program Files (x86)\Zend\Apache2\htdocs\TinOuzel\application\controllers\IndexController.php(16): Zend_Session_Namespace->__construct('Testohwo')
#2 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action.php(513): IndexController->indexAction()
#3 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
#4 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#5 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#6 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#7 C:\Program Files (x86)\Zend\Apache2\htdocs\TinOuzel\public\index.php(26): Zend_Application->run()
#8 {main}  

Request Parameters:

array (
  'controller' => 'index',
  'action' => 'index',
  'module' => 'default'
)
melkorm
Bug

w 1.11.0 poprawili (ściągnij 1.11.1).
agmakonts
no to jednak zostaje bootstrap bo na 1.11.1 nadal bez zmian ;/
Dzięki za cierpliwość smile.gif
melkorm
Próbowałeś rozwiązań z komentarzy?
agmakonts
działa ale dziwnie wywala to powiadomienie o strefie co wyskakuje zawsze przy błędach ale żadnego błędu i zapisuje ładne sesje ale nie zapisuje do bazy.
Dałem se spokój ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.