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 :

include_once : problème [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut include_once : problème
    Bonjour,

    Je suis en première année d'IUT informatique et dans le cadre de mes études, je dois rendre un site web qui a fait l'objet de 6 TP ainsi que pas mal de travail personnel demain matin.

    J'ai donc tenté de tout améliorer notamment en triant un peu mes fichiers.

    Mais maintenant plus rien ne va plus avec mes include_once.

    Déjà impossible d'inclure un fichier qui n'est pas dans le répertoire courant ou dans un de ses sous-répertoires.

    Warning: include_once(../Classes/Personne.php): failed to open stream: No such file or directory in /media/Acer/Users/Neckara/Desktop/Donnees/Cours/Exo_TP/S2/P4/ProgWeb/tp6/ClassesPHP/UtilisationClasse/ajouterPersonne.php on line 6 Warning: include_once(): Failed opening '../Classes/Personne.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /media/Acer/Users/Neckara/Desktop/Donnees/Cours/Exo_TP/S2/P4/ProgWeb/tp6/ClassesPHP/UtilisationClasse/ajouterPersonne.php on line 6 Warning: include_once(../functions.php): failed to open stream: No such file or directory in /media/Acer/Users/Neckara/Desktop/Donnees/Cours/Exo_TP/S2/P4/ProgWeb/tp6/ClassesPHP/UtilisationClasse/ajouterPersonne.php on line 7 Warning: include_once(): Failed opening '../functions.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /media/Acer/Users/Neckara/Desktop/Donnees/Cours/Exo_TP/S2/P4/ProgWeb/tp6/ClassesPHP/UtilisationClasse/ajouterPersonne.php on line 7 Fatal error: Class 'Personne' not found in /media/Acer/Users/Neckara/Desktop/Donnees/Cours/Exo_TP/S2/P4/ProgWeb/tp6/ClassesPHP/UtilisationClasse/ajouterPersonne.php on line 42
    Ensuite, j'ai une page login.php qui inclus ajouterProduit.php qui lui-même inclus Produit.php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo "jj";
     
    include_once("http://localhost/progweb/tp6/ClassesPHP/Classes/Produit.php");
     
    echo "xx";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //produit.php :
    <?php 
    echo "ee";
    Seul le "jj" s'affiche puis plus rien.


    Je ne comprend vraiment pas ce qu'il se passe.

    Auriez-vous une idée?

    Merci d'avance,
    Neckara

  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 386
    Points
    9 386
    Par défaut
    Déjà prenons de bonnes habitudes, pas de chemin http dans un include !

    Ensuite le message est clair, tu as un souci d'arborescence.
    Dans le fichier : tp6/ClassesPHP/UtilisationClasse/ajouterPersonne.php
    Tu cherches à inclure : ../Classes/Personne.php (autrement dit : tp6/ClassesPHP/Classes/Personne.php)
    qui visiblement ne se trouve pas là.
    Bref ton tri n'a peut être pas été si bien fait.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Et pourtant Personne.php se trouve bien dans :
    tp6/ClassesPHP/Classes/Personne.php

    Déjà prenons de bonnes habitudes, pas de chemin http dans un include !
    Comme je n'arrivais pas à utiliser de chemins relatifs, j'ai utilisé un chemin absolu mais comme je l'ai dit, ça ne marchait guère mieux, plus d'erreur mais la fonctions include_once() bloque sans que je comprenne pourquoi.


    Sinon j'ai trouvé le problème : apparemment, il inclut les fichiers relativement au premier fichier incluant et non relativement au fichier courant.

    C'est vraiment bizarre.

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Regarde dans le manuel, prends directement ce code pour être sûr:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once dirname(__FILE__).'chemin fichier à partir du Web';
    qui serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once dirname(__FILE__).'/tp6/ClassesPHP/Classes/Personne.php';
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    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 je n'arrivais pas à utiliser de chemins relatifs, j'ai utilisé un chemin absolu
    Dans ce cas là il aurait fallu utiliser un chemin physique absolu.
    Un chemin comme : C://wamp/www/...blablabla/fichier.php
    Ou : /home/user/...blablabla/fichier.php

    En somme il ne faut pas confondre une URL (ou URI) et les chemins liés au système de fichier/OS (du disque) de la machine.


    L'idéal serait de définir une bonne fois pour toute (en général dès le départ) le chemin ROOT du projet (dans une constante ou autre), ensuite atteindre les fichiers (classes ou autres) avec des chemins physiques absolus basés du ROOT.
    Si l'application (les classes, fonction par exemple) est dans un répertoire différent que le Host (le www ou public_html bien souvent) alors il suffit de créer 2 différents chemins de base (ROOT_APP et ROOT_HOST pour exemple).

    Ceci évitant de rechercher tout le temps (plusieurs fois) des chemins qui se doivent être connus à l'avance, très tôt dans le déroulement.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    J'ai préféré utiliser une autre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $root_maPage = "";
    if(isset($root))
        $root_maPage = $root;
     
    $root = $root_maPage . "../../dossier1/";
    include_once($root_maPage . $chemin_relatif);
    Bon, ce n'est certes pas la meilleurs mais je pense qu'elle suffira dans ce cas là.

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

Discussions similaires

  1. problème include_once et class php
    Par lekonquerant dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2011, 16h47
  2. Problème fonction include_once
    Par V_R46 dans le forum Langage
    Réponses: 1
    Dernier message: 27/07/2006, 10h39
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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