IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Zend_Session_Exception et fichier non trouvé!


Sujet :

Zend Framework PHP

  1. #1
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut Zend_Session_Exception et fichier non trouvé!
    Bonjour,

    Je suis en train de créer une application modulaire, jusque là tout va bien ou presque.
    Je crée une ouverture de session via login/password
    J'ai une page 'mon compte' qui affiche mes infos
    lorsque je vais sur cette page en session et que je change de page, j'ai une exception Zend_Session :

    Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Zend_Session::start() - /var/www/lib/Zend_1.9.3PL1/Loader.php(Line:83): Error #2 Zend_Loader::include() [<a href='function.include'>function.include</a>]: Failed opening 'Ez/View/Helper/InfoMessage.php' for inclusion (include_path='/var/www/Mailletv2.1/application/../library:/var/www/Mailletv2.1/library:.:/usr/share/php:/usr/share/pear') Array' in /var/www/lib/Zend_1.9.3PL1/Session.php:493 Stack trace: #0 /var/www/lib/Zend_1.9.3PL1/Session/Namespace.php(143): Zend_Session::start(true) #1 /var/www/Mailletv2.1/application/Bootstrap.php(33): Zend_Session_Namespace->__construct('mailletv21') #2 /var/www/lib/Zend_1.9.3PL1/Application/Bootstrap/BootstrapAbstract.php(662): Bootstrap->_initSession() #3 /var/www/lib/Zend_1.9.3PL1/Application/Bootstrap/BootstrapAbstract.php(615): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('session') #4 /var/www/lib/Zend_1.9.3PL1/Application/Bootstrap/BootstrapAbstract.php(579): Zend_Application_Bootstrap_Boot in /var/www/lib/Zend_1.9.3PL1/Session.php on line 493

    Je ne comprend vraiment pas ce qui se passe à ce moment précis .
    J'ai une Exception Zend_Session m'indiquant une erreur de Loader!

    dans mon bootstrap, j'initialise la session de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    protected function _initSession()
    {
        $configSession = new Ez_Config_Ini(APPLICATION_PATH . '/configs/session.ini', APPLICATION_ENV);
        Zend_Session::setOptions($configSession->toArray());
        // Path to files session
        Zend_Session::setOptions(array('save_path' => $configSession->save_path));
        Zend_Registry::set('session', $session = new Zend_Session_Namespace($configSession->name));
     
        return $session;
    }
    La configuration est la suivante :
    use_cookies = on
    use_only_cookies = on
    use_trans_sid = off
    strict = off
    remember_me_seconds = 28800
    cookie_lifetime = 28800
    name = mailletv21
    gc_divisor = 10
    gc_maxlifetime = 86400
    gc_probability = 1
    save_path = /tmp

    Je suis bloqué, à chaque fois que je navigue j'ai cette erreur redondante.

    Je ne sais pas si c'est lié, mais j'ai également un problème de stockage d'identité avec Zend_Auth. En effet, je stocke l'objet User_Row après authentification.
    Lorsque je fait Zend_Auth::getInstance()->getIdentity() j'obtient une classe PHP incomplète.
    Pour résoudre le problème, j'ai dû sérialiser l'objet avant écriture :
    Zend_Auth::getInstance()->getStorage()->write(serialize($this));
    et je dois le déserialiser à chaque appel :
    unserialize(Zend_Auth::getInstance()->getIdentity());

  2. #2
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    un p'tit up!

    Bon j'ai tout repris à zero en créant un nouveau projet et en ajoutant les ressources une par une jusqu'à ce que ça plante!

    Je viens de m'apercevoir d'un truc bizare, je pense que c'est un bug... ou sinon je n'ai pas compris le tuto de julien pauli sur les applications modulaires.

    Mon objet UserRow enregistré en session ne s'affiche correctement que sur la page d'accueil, par contre lorsque je vais dans le module admin, j'ai une erreur :
    Notice: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Admin_Model_User" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /var/www/Mailletv2.1/application/modules/default/views/scripts/login/welcome.phtml on line 2


    Pourtant, dans le module admin j'ai bien ajouté la class Admin_Bootstrap extends Zend_Application_Module_Bootstrap!
    La classe UserRow devrait etre automatiquement déserialisée mais apparement il ne trouve pas la classe d'origine.
    Puis m'est venu une idée complètement folle.... oui ça m'arrive!
    j'ai déclaré un nouveau namespace pour le module admin dans le bootstrap de l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
     
        protected function _initDefaultNamespace()
        {
            $this->bootstrap('frontcontroller');
            $front = $this->getResource('frontcontroller');
            $defaultModule = $front->getDefaultModule();
     
            new Zend_Application_Module_Autoloader(array(
                    'namespace' => '', // pas de namespace
                    'basePath'  => APPLICATION_PATH . '/modules/' . $defaultModule,
                ));
     
            new Zend_Application_Module_Autoloader(array(
                    'namespace' => 'Admin', // pas de namespace
                    'basePath'  => APPLICATION_PATH . '/modules/admin',
                ));
        }
    }
    Et là ça fonctionne!

    Pourquoi? Je ne sais pas! Normalement le bootstrap de l'application est censé détecter le bootstrap du module admin et créer automatiquement un autoloader pour ce module, donc :
    - Soit il ne le fait pas
    - Soit il le fait mal
    - Soit j'ai rien compris

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Et dans /module/admin, tu nommes bien ton bootstrap : Admin_Bootstrap ?

  4. #4
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Oui bien sûr, visiblement il faut déclarer chaque module dans le bootstrap principal. Je trouve pas ça très pratique du reste.

Discussions similaires

  1. Fichier non trouvé, bien qu'existant
    Par ALT dans le forum Administration système
    Réponses: 18
    Dernier message: 30/03/2007, 10h21
  2. importation de données : fichier non trouvé
    Par sam01 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 18/01/2007, 14h38
  3. fichier non trouvé dans apache?
    Par darkbob dans le forum Web
    Réponses: 1
    Dernier message: 18/07/2006, 03h03
  4. Création version client - fichiers non trouvés
    Par Pascal dans le forum WinDev
    Réponses: 7
    Dernier message: 03/12/2004, 11h34
  5. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo