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 :

Flex - Cannot redeclare class Zend_Loader


Sujet :

Zend Framework PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut Flex - Cannot redeclare class Zend_Loader
    Bonjour,

    je travaille avec Flex For PHP 4.5 (Zend 1.10.8 pour le PHP), sur IIS et SQL Server 2005.
    Or, de temps en temps, j'ai une erreur qui survient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Fatal error:  Cannot redeclare class Zend_Loader in ZendFramework\library\Zend\Loader.php on line 31
    Après avoir regardé sur le net, beaucoup parle de fichier application.ini dans lequel il faut dé-commenter une ligne :
    includePaths.library = APPLICATION_PATH "/../library"

    Or, travaillant avec Flex je n'ai pas de fichier application.ini. Il y a un fichier amf_config.ini, dans lequel j'indique le chemin de mon Zend... Et c'est tout...
    Voici son contenu :
    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
    [zend]
    ;set the absolute location path of webroot directory, example:
    ;Windows: C:\apache\www
    ;MAC/UNIX: /user/apache/www
    webroot =C:/wamp/www/MonProjet
     
    ;set the absolute location path of zend installation directory, example:
    ;Windows: C:\apache\PHPFrameworks\ZendFramework\library
    ;MAC/UNIX: /user/apache/PHPFrameworks/ZendFramework/library
    ;zend_path =
     
    [zendamf]
    amf.production = false
    amf.directories[]=php/src/modele
    amf.directories[]=php/src/modele/dao
    Si quelqu'un a une idée merci de votre aide.

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    je crois qu'il te suffit de faire quelque chose assez simple pour identifier le probleme.

    d'abord tu patches ZendFramework\library\Zend\Loader.php on line 1

    tu rajoutes des conditions du type if defined / ou class exist et tu conditionne la déclaration/définition de la classe à la non existance de ce truc.

    Si le loader est appelé alors qu'il est déjà chargé une fois, tu affiches la pile d'appel, la trace d'inclusions, $_REQUEST, les classes/interfaces/traits définis et tu t'envoies un mail (et normalement tu peux continuer le traitement comme si de rien était).

    bon courage, les trucs qui se produisent une fois de temps en temps sont toujours un peu compliqué à reproduire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Bonjour gene69, et merci de ta réponse.

    J'ai fait quelque chose de ce goût là :
    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
    if (class_exists("Zend_Loader")){
    	$text = "debug_backtrace : ".count(debug_backtrace())." \n";
    	foreach(debug_backtrace() as $k=>$v){
    			if($v['function'] == "include" || $v['function'] == "include_once" || $v['function'] == "require_once" || $v['function'] == "require"){
    				$text  .= "#".$k." ".$v['function']."(".$v['args'][0].") called at [".$v['file'].":".$v['line']."]<br />";
    			}else{
    			   $text  .= "#".$k." ".$v['function']."() called at [".$v['file'].":".$v['line']."]<br />";
    			}
    		} 
    	$From  = "From:nom@domaine.com\n";
    	$From .= "MIME-version: 1.0\n";
    	$From .= "Content-type: text/html; charset= iso-8859-1\n";
    	mail("monadressemail", "Erreur Loader l.31", $text, $From);
     }else{
    class Zend_Loader{...}}
    Est ce que c'était à ça que tu pensais ?
    Dans mon debug_backtrace, pour l'instant je n'ai que du vide (mon count me retourne 0)... ça me semble un peu illogique...

Discussions similaires

  1. [1.x] Erreur installation, cannot redeclare class sfDoctrineBaseTask
    Par __fabrice dans le forum Symfony
    Réponses: 13
    Dernier message: 31/05/2010, 13h09
  2. Réponses: 2
    Dernier message: 10/01/2010, 17h39
  3. [Dates] Fatal error : Cannot redeclare class
    Par ediawara dans le forum Langage
    Réponses: 10
    Dernier message: 27/11/2007, 14h47
  4. [Wamp] cannot redeclare class maClasse
    Par pcdj dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/01/2007, 08h03
  5. Cannot redeclare class...
    Par DeezerD dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 18h51

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