Je vous écris pour voir si quelqu'un d'entre vous a déjà rencontré ce problème et a une chance de comprendre pourquoi cela m'est arrivé.Comportement Zend_Session étrange en utilisant Zend_Application
C'est l'histoire.
J'ai développé de nombreuses applications ZF avant Zend Framework v. 1.8, puis j'ai arrêté pendant environ 18 mois. Maintenant, je devais commencer un nouveau projet sur lequel j'ai décidé d'utiliser à nouveau Zend Framework.
Sur mon serveur local, j'avais la version 1.11.3 installée, donc je n'ai pas téléchargé la dernière version.
Avant l'utilisation de Zend_Application avec le fichier Bootstrap.php j'ai utilisé pour lancer des sessions de mettre mes options de session dans mon fichier config.ini puis de les charger dans une instance Zend_Session comme ceci:
config.ini
sessions.name = NAME
sessions.use_only_cookies = 1
sessions.save_path = APPLICATION_PATH "/../tmp/sessions"
sessions.strict = on
sessions.remember_me_seconds = 1800
index.php (dans le répertoire du serveur web public) avant de commencer l'application:
Globals::startSession();
classe Globals avec divers épreuves de séparation personnalisées meth utiles SACO:
class Globals
{
static public function startSession()
{
$sessions_conf = self::getConfig()->sessions;
Zend_Session::setOptions($sessions_conf->toArray(););
Zend_Session::start();
}
}
Cela a toujours très bien, ce qui permet mes sessions (utilisés avec Zend_Session_Namespace) et le stockage des fichiers de session dans le save_path.
Avec Zend_Application le manuel dit de simplement stocker les options de session dans le fichier application.ini sous la rubrique « ressources » et Zend_Session sera automatiquement configuré ...
Je l'ai fait comme ceci:
; SESSIONS
resources.session.name = NAME
resources.session.use_only_cookies = 1
resources.session.save_path = APPLICATION_PATH "/../tmp/sessions"
resources.session.strict = on
resources.session.remember_me_seconds = 1800
Cela n'a pas fonctionné. J'ai donc essayé d'utiliser (pas en même temps!) Les méthodes _initSession() et _initForceSession() dans le fichier Bootstrap.php, en les mettant au début de la classe et l'écriture dans leur code:
$this->bootstrap('session');
Mais la session ne fonctionnait jamais, les données n'étaient pas stockées entre les requêtes http et les fichiers de session n'étaient jamais écrits dans le save_path ...
Pourriez-vous, s'il vous plaît, faites-moi savoir si c'est un comportement normal (peut-être que j'ai manqué quelque chose quelque part ...)?
De toute évidence, j'ai résolu le problème de ré-implémenter mon ancienne méthode (et cela fonctionne parfaitement), mais je voudrais apprendre à l'utiliser correctement.
Merci d'avance.
pouvez-vous poster le code pour votre _initSession() et _initForceSession() (si différent)? –
Non, le code est le même, il n'y a qu'un appel à Zend_Session :: start(); – Alessandro