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 :

No such file dans ma vue


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Points : 31
    Points
    31
    Par défaut No such file dans ma vue
    Bonsoir a tous,
    J'ai une vue qui ne peut recevoir aucun include ou require. Dès que je veut en faire un j'obtient le message suivant :
    failed to open stream: No such file or directory ...

    Le chemin de mon fichier est correct, mais je n'arrive pas a y acceder.
    Voici ma vue :

    require_once '../../model/Post.php';

    $posts = Post::FindAll();

    <?php foreach ($posts as $post): ?>
    <p><?php echo $post['id']; ?></p>
    <?php endforeach; ?>


    Merci d'avance pour vos réponses.

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Comme ça, sans plus d'infos, je dirais que l'erreur retournée est bien fondée.
    - Soit chemin le relatif ici est faut.
    - Soit il y a erreur sur le nom (genre post.php au lieu de Post.php)

    Mais n'y aurait pas un : Permission denied dans le message ? Ce qui serait plus tout à fait le même problème.

    Le truc infaillible et simple à faire normalement, c'est de créer un fichier (genre realpath.php) au même niveau que le Post.php, et y mettre ce code, et pointer dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo realpath('Post.php');
    ?>
    Soit il y a erreur : Le nom n'est pas bon
    Soit ça retourne le chemin physique complet.
    On fait un copier du chemin, et ensuite on le colle dans le require_once('chemin_physique_complet/Post.php');

    Ca doit marcher, et théoriquement tu devrais avoir la raison de l'origine de cette erreur.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Points : 31
    Points
    31
    Par défaut
    Le chemin relatif est correct je me sert de l'autocompletion avec netbeans et je l'ai contrôlé. Le nom de la classe l'est également.
    Il n'y a pas de permission denied dans le message.
    J'ai crée le fichier realpath.php et j'ai exactement la meme erreur qu'avec le fichier Post :

    Warning: require_once(../../model/realpath.php) [function.require-once]: failed to open stream: No such file or directory in D:\wamp\www\b\layout\vue\ListPosts.php on line 25

    Fatal error: require_once() [function.require]: Failed opening required '../../model/realpath.php' (include_path='.;C:\php5\pear') in D:\wamp\www\b\layout\vue\ListPosts.php on line 25

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    J'ai crée le fichier realpath.php et j'ai exactement la meme erreur qu'avec le fichier Post :

    Warning: require_once(../../model/realpath.php) [function.require-once]: failed to open stream: No such file or directory in D:\wamp\www\b\layout\vue\ListPosts.php on line 25
    Au vu du retour d'erreur, tu n'as pas effectué comme je l'ai décrit, car il n'y a pas de require dans le code du realpath.php, juste la fonction realpth(), donc impossible d'avoir un retour d'erreur sur un require_once.

    Le message d'erreur ne devrait avoir des ../../ aussi, caractéristique d'un chemin relatif, pas possible car le fichier realpath.php doit être situé au même niveau que Post.php (pas 1 ou 2 dossier avant) comme j'ai expliqué.

    Bref ... tu persiste à mettre un chemin relatif, alors que le but dans ce que je te propose c'est d'obtenir un chemin complet, et l'exploiter tel quel dans le require_once().
    Vu que tu est en local, le chemin serait du genre : require_once('D:/wamp/www/b/model/Post.php');
    Ce n'est qu'une étape, c'est juste pour comprendre la nature de l'erreur. Après on vois.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Points : 31
    Points
    31
    Par défaut
    Je suis pas sur d'avoir bien compris. J'ai mis un include de realpath.php dans listpost.php.
    Voici mes erreurs (apparement je n'ai pas acces a ma classe post) :

    Warning: include(../../model/realpath.php) [function.include]: failed to open stream: No such file or directory in D:\wamp\www\b\layout\vue\ListPosts.php on line 25

    Warning: include() [function.include]: Failed opening '../../model/realpath.php' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\www\b\layout\vue\ListPosts.php on line 25

    Warning: include(../../model/Post.php) [function.include]: failed to open stream: No such file or directory in D:\wamp\www\b\layout\vue\ListPosts.php on line 26

    Warning: include() [function.include]: Failed opening '../../model/Post.php' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\www\b\layout\vue\ListPosts.php on line 26

    Fatal error: Class 'Post' not found in D:\wamp\www\b\layout\vue\ListPosts.php on line 28

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par RomJo Voir le message
    Je suis pas sur d'avoir bien compris. J'ai mis un include de realpath.php dans listpost.php.
    Et bien non, il n'y a pas de include à faire sur le realpath.php, il faut juste pointer dessus comme une page à part entière.
    Le truc est de récupérer le chemin qu'affichera le echo realpath('Post.php'), ensuite le placer dans le require_once().

    Le but est de savoir si tu parviens à inclure le Post.php avec un chemin physique complet, et non un chemin relatif.


    Tu pourrait aussi faire le même manip sur ton fichier où se trouve le require_once(), le ListPosts.php si j'ai bien compris.
    Ensuite, pareil, pointer dessus, et tu obtiendra son chemin physique complet.
    Suffit après de comparer les 2 chemins, celui du Post.php et du ListPosts.php, tu devrais pouvoir en déduire le chemin relatif qu'il faudrait faire.


    A titre vraiment personnel, je n'utilise jamais de chemin relatif, j'estime que c'est une technique "casse gueule".
    Soit j'utilise un chemin absolu, soit j'utilise un chemin complet qui est contenu dans une constante définie dès le départ.
    J'exploite entre autre le set_include_path() en ajoutant 1 ou 2 chemins que je dirais clés, qui me permet d'indiquer des chemins absolus la plupart du temps.
    En faite, je me suis basé à ce qui est dit dans la doc, ce passage en particulier :
    Les fichiers sont inclus suivant le chemin du fichier fourni ; si aucun n'est fourni, l'include_path sera vérifié.

    Si un chemin est défini (chemin complet ou relatif), l'include_path sera ignoré. Par exemple, si un nom de fichier commence par ../, PHP cherchera dans le dossier parent pour y trouver le fichier spécifié.
    Par rapport à ce qui est dit, un chemin relatif est potentiellement risqué, car il dépend de là où on tente de l'inclure.
    Un chemin complet c'est du 100% garantie car on peu l'obtenir avec un dirname() par exemple, et donc le définir une bonne fois pour toute dans le set_include_path, et baser les chemins par rapport à celui ci.
    Ceci reste perso, encore une fois.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Points : 31
    Points
    31
    Par défaut
    Sa marche. J'ai mis les chemins complets et après j'ai réussi a en déduire les relatifs.
    Merci de ton aide RunCodePhp.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Stream] Mettre le contenu d'un File dans un tableau de byte
    Par JohnBlatt dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 25/08/2006, 14h18
  2. Count dans une vue
    Par gldfdp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 05h55
  3. Réponses: 16
    Dernier message: 17/06/2005, 15h44
  4. Paramètres possibles dans une vue ms sql server
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 30/03/2005, 19h03
  5. Insérer dans une Vue ordonnée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2004, 15h27

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