Zend Framework Sitzung zu verlieren
-
03-07-2019 - |
Frage
Ich versuche, einen Flash-Uploader in meiner Zend Framework-Anwendung zu implementieren, aber ich habe Probleme mit der Sitzung.
Das Flash keine Cookie-Header senden und aus diesem Grund die Sitzung verloren. Ich versuche, die sessionId als Post param und in meiner Bootstrap-Datei zu senden ich eine Sitzungs_ID hinzugefügt ($ _ POST [ 'session_id]), aber diese doenst zu funktionieren scheint.
Ich verwende eine MySQL-Tabelle als Sitzungsspeicher
Ich habe versucht, den Fehler zu debuggen und soweit ich sehe, wird die session_id gesetzt und die Speicherung gibt die corect Daten aus der Datenbank, aber es scheint nicht richtig in dem $ _SESSION global festgelegt werden.
Und noch seltsamer erscheint es auf meinen Windows-Computern zu arbeiten, aber nicht auf dem Linux-Staging-Server.
Lösung
Wissen Sie, ob Sie Suhosin mit Ihrer PHP-Installation verwenden?
Ich habe ein gehört wenige Berichte von Suhosin dies zu den Sitzungen zu tun, Lösung in dieser Fall ist suhosin.session.cryptua
in php.ini zu deaktivieren.
Wie auch immer, wenn das nicht Ihr Problem ist, nur um sicher zu sein mit den Grundlagen:
- Stellen Sie sicher, dass Sie Ihre
session_id()
in einem Beitrag von Flash passieren, zum Beispiel mit SWF Hochladen , ist dies getan, indem es in dempost_params
Wert des Konfigurations Array übergeben. - Stellen Sie sicher, dass Sie rufen
session_id($_POST['session_id])
vorsession_start()
Aber wie auch immer, ist es wahrscheinlich zu Ihrer PHP-Installation verbunden, wenn Sie sagen, es unter Ihrer Windows-Umgebung funktioniert.
Andere Tipps
Das klingt ähnlich wie verschiedene Fehler, die in den letzten Jahren berichtet worden, obwohl in den meisten Fällen auf Linux gearbeitet und nicht unter Windows.
http://framework.zend.com/issues/browse/ZF-2459 https://www.zend.com/en/ Foren / index.php? t = msg & goto = 16104 & S = de7d9b854db445eb37d0f33470cac6b0
und erst im letzten Monat:
http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/
- MarkusQ
Versuchen Sie, die folgende in Ihrer Controller-Aktion:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();