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 :

Warning et fatal error sur des require()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de chatofor
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut Warning et fatal error sur des require()
    Bonjour,

    Je suis en train d'apprendre le PHP et je suis un tutoriel. J'essaie de le suivre à la lettre et de tout décortiquer pour bien comprendre mais je bute dès le début sur quelque chose que je ne comprends pas. En effet j'obtiens ce message d'erreur lorsque j'accède à la page index.php de mon site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    test
    Warning: require_once(..\Web/Controller/defaultController.php): failed to open stream: No such file or directory in /var/www/html/ProjetJeux/Web/index.php on line 14
     
    Fatal error: require_once(): Failed opening required '..\Web/Controller/defaultController.php' (include_path='.:/usr/share/php') in /var/www/html/ProjetJeux/Web/index.php on line 14
    Je vous colle une image représentant mon index.php ainsi que l'arboresence des fichiers en espérant que ça permette de vous aider à m'aider

    Nom : require.png
Affichages : 126
Taille : 103,5 Ko

    Je vous remercier par avance pour votre aide

  2. #2
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour,

    Dans ton code tu utilises la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function __autoload($class)
    {
        $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
        require_once('..' . DIRECTORY_SEPARATOR . $path . '.php');
    }
    Cette fonction a pour but de charger dynamiquement tes objets en fonction de leur namespace (c'est le principe de la recommandation PSR-2 qui est suivi par la majorité des frameworks).
    Donc tu te retrouves avec le chemin suivant à charger : ..Web/Controller/defaultController.php

    Mais il me semble que tu n'es pas sur un système Windows et je pense que le mélange de slash et anti-slash passe mal.
    Essaye ça pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('..' . DIRECTORY_SEPARATOR . $path . '.php');

  3. #3
    Membre averti Avatar de chatofor
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut
    C'était bien ça, merci beaucoup. Si tu pouvais préciser un peu ce serait sympa aussi parce que l'erreur est résolue mais je n'ai pas vraiment compris pourquoi. Mais merci encore

  4. #4
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Et bien ton autoload fournit un chemin pour charger tes fichiers de classes. Et le problème c'est que le tutoriel que tu lis doit être réalisé sur Windows. Alors que tu dois être en train de travailler sur Mac ou Linux. Et selon ton OS, il va avoir (ou pas) du mal avec les slash et anti-slash dans les chemins système. C'est pour ça que la constante DIRECTORY_SEPARATOR existe. C'est pour savoir lequel utilisé en fonction de ton système.

    Dans ton exemple tu vois bien que tu utilises un ant-slash au début alors que le reste de ta chaine utilise des slash :
    ..\Web/Controller/defaultController.php'

Discussions similaires

  1. Unset fatale error sur une array $_SESSION
    Par helkøwsky dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2012, 01h30
  2. [2.x] SwiftMailer Fatal Error sur Beta 3
    Par rica1503 dans le forum Symfony
    Réponses: 2
    Dernier message: 31/05/2011, 11h27
  3. [MySQL] Catchable fatal error sur comparatif de dates
    Par nicolas2603 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/03/2011, 10h55
  4. [Web Service] Fatal error sur un client SOAP
    Par jerome600 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 15/03/2011, 11h01

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