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 :

Problème avec include


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut Problème avec include
    Bonjour à tous
    Je développe un site en PHP pour gérer une base de données.
    En temps normal, je développe le projet sous XP avec aptana.
    Mais des besoins m'ont poussé à devoir développer sur une machine supplémentaire avec une gentoo, donc j'ai installé tout ce qui fallait et je pense avoir rien oublier.
    Sur la machine avec XP, ça marche tout bien.
    Par contre avec la gentoo, j'ai un problème avec la fonction include (les fichiers sont identiques bien sur).

    Si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    include '../SQL/dbconnect.php';
    //ou
    include '/Actions/SQL/dbconnect.php';
    ça marche pas (avec un chemin relatif ou absolu). En revanche si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include($_SERVER['DOCUMENT_ROOT'].'/Actions/SQL/dbconnect.php');
    ça marche...
    Le plus étrange c'est que si je teste avec un autre projet qui est en ligne dont je me suis inspiré (et dont j'ai les sources), et bien là il n'y a pas de soucis avec les include.
    Du coup je pense que le problème ne vient pas forcément de PHP, mais peut-être de ma config de Apache,PHP ou mySql.
    Si quelq'un a une idée...

    EDIT
    Après quelques test, il s'avère que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include 'Actions/SQL/dbconnect.php';
    marche aussi mais j'aurais bien aimé savoir quels sont les règles pour les chemins.
    Si quelqu'un peut éclairer ma lanterne
    I thought what I'd do was, I'd pretend I was one of those deaf-mutes
    On ne peut pas être "sous" Windows, ils ont déjà touché le fond => Linux powaaa

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Que ce soit sous linux ou sous windows, c'est le système de fichier qui est utilisé pour réaliser les inclusions, et pas l'arborescence du site (qui elle est accessible via le protocole http).

    Imaginons que tu ait un fichier 'index.php' dans le répertoire '/var/www/'. Si tu veux inclure le fichier 'dbconnect.php' situé dans '/var/www/Actions/SQL/', tu as les solutions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    include 'Actions/SQL/dbconnect.php';
    include './Actions/SQL/dbconnect.php';
    include '../www/Actions/SQL/dbconnect.php';
    include '/var/www/Actions/SQL/dbconnect.php';
    Les trois premiers sont des chemins relatifs. Le '.' correspond au répertoire courant, et '..' correspond au répertoire parent. Le dernier cas est un chemin absolu (il part de la racine du système de fichier '/'). Pour ce dernier cas, '/var/www' pourrait être remplacé par $_SERVER['DOCUMENT_ROOT']...

    Pour les exemples donnés qui ne fonctionnent pas (et toujours en considérant que le fichier de base se trouve dans '/var/www/'), avec '../SQL/dbconnect.php', le fichier devrait se trouver dans le répertoire '/var/SQL/', et avec '/Actions/SQL/dbconnect.php', il faut qu'il se trouve dans un répertoire Action situé à la racine de ton système de fichier...

    j'epère avoir un peu éclairé ta lanterne

  3. #3
    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
    Si ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'Actions/SQL/dbconnect.php';
    Alors ton script est "au-dessus" du répertoire Actions.

    Du coup, c'est normal que ../Actions ne marche pas, puisque tu vas chercher un niveau au-dessus de ton script.
    C'est encore plus normal avec /Actions, car là tu va carrément cherche un dossier Actions à la racine de la machine.

    Ce qui pourrait marcher, c'est Mais l'utilité est discutable.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  4. #4
    Membre habitué Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Je viens de m'apercevoir que j'ai oublié de préciser ce qui m'ennuyais^^

    En fait, quand je fais "../SQL/dbconnect.php" lorsque le site est hebergé sur mon serveur sur la machine XP, ça marche. Mais si j'utilise le même chemin dans mon script exécuté sur mon serveur hebergé sur la gentoo, là ça ne marche plus, et c'est ça que je ne comprend pas.

    Petite précision : le script qui réalise cet include se trouve dans un répertoire de même niveau que SQL/, ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /
         Actions/
              SQL/
                   dbconnect.php
              Traitements/
                   script.php
    et donc le "../SQL/dbconnect.php dont je parle dès le début devrait marché (c'est le cas sur mon serveur sous XP d'ailleurs), mais quand je lance mon script il me balance une page blanche (sur ma gentoo).

    Le '.' correspond au répertoire courant, et '..' correspond au répertoire parent.
    Je le sais bien, et c'est pour ça que je ne comprend pas.

    Du coup, c'est normal que ../Actions ne marche pas, puisque tu vas chercher un niveau au-dessus de ton script.
    Y'a ça dans aucun de mes exemples jml94

    Voilà, voilà
    I thought what I'd do was, I'd pretend I was one of those deaf-mutes
    On ne peut pas être "sous" Windows, ils ont déjà touché le fond => Linux powaaa

  5. #5
    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
    Vérification un peu con, mais on ne sait jamais : la casse des noms de fichiers. Windows n'y est pas sensible, contrairement à Linux.

    J'y crois pas, mais qui ne tente rien n'a rien.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  6. #6
    Membre habitué Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Non c'est pas çà.
    Je m'amuse pas à ne pas respecter la casse:p
    Mais bon çà aurait pu
    I thought what I'd do was, I'd pretend I was one of those deaf-mutes
    On ne peut pas être "sous" Windows, ils ont déjà touché le fond => Linux powaaa

  7. #7
    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
    OK, pour continuer dans les banalités à vérifier, que donne le code suivant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_SERVER['PHP_SELF']);
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  8. #8
    Membre habitué Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Je vais pas pouvoir tester maintenant car je bosse justement mon projet sur le serveur XP. Donc je te redirais çà ce soir
    I thought what I'd do was, I'd pretend I was one of those deaf-mutes
    On ne peut pas être "sous" Windows, ils ont déjà touché le fond => Linux powaaa

  9. #9
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Autre point à vérifier : que contient ton include_path ?

Discussions similaires

  1. Problème avec include (encore ?!)
    Par Neii Mad dans le forum Langage
    Réponses: 13
    Dernier message: 07/07/2006, 18h11
  2. [Wamp] problème avec include
    Par etrevilly dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 06/07/2006, 15h26
  3. problème avec include
    Par Sebastien_INR59 dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 16h05
  4. probléme avec include() via HTTP
    Par schlitters dans le forum Langage
    Réponses: 11
    Dernier message: 07/02/2006, 17h19
  5. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 15h22

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