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

Langage PHP Discussion :

require_once avec erreur "cannot redeclare class"


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 20
    Points
    20
    Par défaut require_once avec erreur "cannot redeclare class"
    Bonjour,

    J'ai un problème suite à la migration d'applications d'un serveur php 5.2.5 vers un serveur 5.3.6.

    Lorsque nous faisons des inclusions (95% de require_once) nous notons toujours en chemin symbolique de type : ../monmodule/monmodule.class.php

    Seulement dans certains scripts j'ai un soucis avec l'erreur "cannot redeclare class 'maclass'" qui est dût au format du chemin passé à require_once.

    Exemple :

    1er
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("../monmodule/monmodule.class.php");
    2eme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     require_once("../monmodule/Monmodule.class.php"); //(Majuscule sur le fichier php)

    Sur l'ancienne version de php cela marche sans soucis, sur la nouvelle non. Je ne trouve rien sur le net qui me donne une solution.

    Une idée ?

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Ce n'est pas le nom du fichier qui pose problème mais la class qui est dedans.
    Pour gérer les conflits il faudra passer par les namespaces si ce sont véritablement deux class différentes.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Ce n'est pas le nom du fichier qui pose problème mais la class qui est dedans.
    C'est pas plutot la fonction require_once qui considère qu'il ne l'a pas inclus ? et qui du coup l'inclus à nouveau.


    Pour gérer les conflits il faudra passer par les namespaces si ce sont véritablement deux class différentes.
    Qui que quoi ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par maximeguyot Voir le message
    Qui que quoi ?
    http://php.net/manual/fr/language.namespaces.php

    et si ton code est bien fait pas besoin de require_once
    http://php.net/manual/fr/language.oop5.autoload.php

  5. #5
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    monmodule.class.php et Monmodule.class.php c'est censé être le même fichier ou 2 fichiers différent ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    C'est le meme fichier...

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    utilise require au lieu de require_once

  8. #8
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par maximeguyot Voir le message
    C'est le meme fichier...
    Si c'est le même fichier, il n'y aucune raison pour que la casse change.
    C'est donc ton appel à require_once qui est faux.
    Soit tu utilises toujours la majuscule, soit tu utilises la minuscule.
    Et si ton appli est installée sur un système Unix ou Linux, il ne trouveras ton fichier que si la casse est correcte, alors autant appeler directement le bon nom.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par s.n.a.f.u Voir le message
    Soit tu utilises toujours la majuscule, soit tu utilises la minuscule.
    Je plussois.
    require_once est sensible à la casse, et considère mxxx.php et Mxxx.php comme 2 fichiers différents.
    Comme le dit s.n.a.f.u., il te faut choisir !

  10. #10
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    require_once est sensible à la casse, et considère mxxx.php et Mxxx.php comme 2 fichiers différents.
    Seulement sur un unix, hélas.
    D'où les mauvaises habitudes de certains...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Merci pour vos réponses !

    J'ai plus qu'a faire du rechercher remplacer.


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, 14h09
  2. [Wamp] cannot redeclare class maClasse
    Par pcdj dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/01/2007, 09h03
  3. Cannot redeclare class...
    Par DeezerD dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 19h51

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