Zend Framework perde sessione
-
03-07-2019 - |
Domanda
Sto cercando di implementare un uploader Flash nella mia applicazione framework Zend ma sto riscontrando problemi con la sessione.
Flash non invia intestazioni di cookie e questo è il motivo per cui la sessione viene persa. Sto cercando di inviare sessionId come parametro post e nel mio file bootstrap ho aggiunto un session_id ($ _ POST ['session_id]) ma questo sembra non funzionare.
Sto usando una tabella MySQL come archivio di sessioni
Ho provato a eseguire il debug dell'errore e per quanto vedo, session_id è impostato e l'archiviazione restituisce i dati del corect dal database ma non sembra essere impostato correttamente nel globale $ _SESSION.
E ancora più strano sembra funzionare sul mio computer Windows ma non sul server di gestione temporanea di Linux.
Soluzione
Sai se stai usando Suhosin con la tua installazione di PHP?
Ho sentito un alcuni rapporti di Suhosin che lo fa alle sessioni, soluzione in in questo caso è necessario disabilitare suhosin.session.cryptua
in php.ini.
In ogni caso, se non è questo il tuo problema, solo per essere sicuro con le basi:
- Assicurati di passare il
session_id ()
in un post del tuo Flash, ad esempio, con Caricamento SWF , questo viene fatto passandolo nelpost_params
valore dell'array di configurazione. - Assicurati di chiamare
session_id ($ _ POST ['session_id])
prima disession_start()
Ma comunque, è probabilmente correlato all'installazione di PHP se stai dicendo che funziona nel tuo ambiente Windows.
Altri suggerimenti
Sembra simile a vari bug che sono stati segnalati nel corso degli anni, anche se nella maggior parte dei casi ha funzionato su Linux e non su Windows.
http://framework.zend.com/issues/browse/ZF-2459 https://www.zend.com/en/ forum / index.php t = msg & amp;? goto = 16104 & amp; S = de7d9b854db445eb37d0f33470cac6b0
e di recente il mese scorso:
http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/
- MarkusQ
Prova quanto segue nell'azione del controller:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();