Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour,
je suis un peu (beaucoup) newbie dans la communauté Zend mais j'ai un problème à vous soumettre.
dans un premier temps je m'excuse si une discussion existe déjà sur mon sujet et je serais fort content d'obtenir le réference de cette discussion. Toutefois j'ai fait une recherche sur le forum et celle-ci n'a rien donnée.
voici enfin mon problème (je sens que certains s'impatiente! :):
je subis sur mon site des déconnexions intempestive, j'entends par là qu'elles ne sont pas systématique et qu'un click sur un lien peut provoquer la deconnexion de la session.
Le site a été fait par 1 préstataire quin'est plus dans l'entreprise ou je suis.
le message d'erreur est le suivant dans les logs:
"[2011-20-05 16:13:20] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : ACCUEIL
[2011-20-05 16:13:20] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : TENTATIVE DE CONNECTION
[2011-20-05 16:13:20] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : Identifiant : 775001337
[2011-20-05 16:13:20] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : Succès de la tentative de connexion
[2011-20-05 16:13:20] [DEBUG] [172.19.10.140] [mid=775001337, login=77500133701] welcome : ACCUEIL"
(là, je fais 2 ou 3 clicks sur le site et je me retrouve deconnecté du site)
"[2011-20-05 16:13:22] [ERR] [172.19.10.140] [pas d'utilisateur] error : Pas de controleur
[2011-20-05 16:13:22] [ERR] [172.19.10.140] [pas d'utilisateur] error : #0 /var/www/Ingenico/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /var/www/Ingenico/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 /var/www/Ingenico/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /var/www/Ingenico/public/index.php(26): Zend_Application->run()
#4 {main}
[2011-20-05 16:13:22] [ERR] [172.19.10.140] [pas d'utilisateur] error : Invalid controller specified (SFR.gif)
[2011-20-05 16:13:22] [ERR] [172.19.10.140] [pas d'utilisateur] error : Pas d'action
[2011-20-05 16:13:22] [ERR] [172.19.10.140] [pas d'utilisateur] error : #0 /var/www/Ingenico/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /var/www/Ingenico/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 /var/www/Ingenico/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /var/www/Ingenico/public/index.php(26): Zend_Application->run()
#4 {main}
[2011-20-05 16:13:22] [ERR] [172.19.10.140] [pas d'utilisateur] error : Invalid controller specified (SFR.gif)
[2011-20-05 16:13:22] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : ACCUEIL
[2011-20-05 16:13:22] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : AFFICHAGE DU FORMULAIRE DE CONNECTION
[2011-20-05 16:13:23] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : ACCUEIL
[2011-20-05 16:13:23] [DEBUG] [172.19.10.140] [pas d'utilisateur] welcome : AFFICHAGE DU FORMULAIRE DE CONNECTION"
Les logs ont été retravaillés car les vrais logs zend n'étaient pas interpretable pour moi. somme toutefois on voit bien les erreurs zend.
je ne comprends pas pourquoi je perds les infos utilisateurs et pourquoi je peux obtenir le message "error : Invalid controller specified (SFR.gif)", sachant que SFR.gif est une image.
quelqu'un aurait une piste svp?
merci d'avance pour vos retours
bob
Hors ligne
Hello,
Il faut savoir que les sessions, par défaut, sont stocké dans le dossier temporaire de php.
Si celui-ci déborde, il est automatiquement vidé. Je n'ai jamais vraiment cherché à comprendre pourquoi avec précision. Si tu es en hébergement mutualisé, et que PHP est partager entre tous les utilisateurs ça se remplit encore plus vite !
Il me semble effectivement que le sujet a été abordé, et la solution était (de mémoire) celle que j'utilise à présent : il faut changer le répertoire ou Zend stock tes sessions. Par exemple, créer un dossier data/sessions à la racine de ton projet me parait être une solution assez propre.
Si tu charge un fichier application.ini comme dans la plupart des tutos, et que tu le charge pour définir ton application, tu peux ajouter ceci :
; Sessions resources.session.save_path = APPLICATION_PATH "/../data/sessions"; ton répertoire de sessions resources.session.use_only_cookies = true; utilisation des cookies resources.session.remember_me_seconds = 86400; ici tu défini la durée en seconde (24h ici ;)).
le ; c'est pour ajouter des commentaires
Puis dans ton boostrap, tu charges ces valeurs de sessions directement dans les options static des sessions :
[lang=php] protected function _initSession() { $options = $this->getOptions(); Zend_Session::setOptions($options['resources']['session']); }
Il faudra penser à faire un système de garbage pour dégager les sessions expirées de ton dossier, je n'ai pas fait attention au fait qu'il puisse être automatique... donc dans le doute... il y en a pour 5 minutes pour faire un petit script et balancer un cron tous les soirs
Est-ce bien la solution attendue ?
Edit : Et pour ton soucis de gif qui n'a pas de controller, si tu utiliser bien un fichier .htaccess correct, c'est que le fichier n'est pas dans le bon répertoire : comme il n'existe pas, apache route l'utilisateur vers l'index.php, qui lui tente de chercher un controller. CQFD.
.htaccess :
# Redirections actives + Symlinks Options +FollowSymLinks RewriteEngine On # Si le fichier n'existe pas , on ne redirige RewriteCond %{REQUEST_FILENAME} !-s RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php [NC,L]
Dernière modification par Doubleslash (23-05-2011 00:43:53)
Hors ligne
merci pour ton aide Doubleslash.
je contrôle et test la solution sur les sessions.
encore merci.
pour le gif c'est un peu plus bizarre que cela car l'image s'affiche bien :S
Hors ligne
Pas de quoi, en espérant que la réponse soit la bonne
Pour ce qui est du gif : peut-être est-il appelé à deux endroits, dont un avec une erreur ? Par exemple dans un CSS (ça peut suffire). Mais il est forcément quelque part (tu as peut-être un controller qui gère les erreurs et qui contient un appel de ce gif ?).
Si tu utiliser un bon IDE (comme netbeans que je te recommande chaudement), tu peux faire une recherche sur toute ton application pour "SFR.gif", tu verra bien qui essaie de l'appeler
Hors ligne