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 :

[Répertoire] Gestion avec include


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut [Répertoire] Gestion avec include
    Bonjour,

    Cela fait quelques jours que je suis bloqué sur un point plutôt facile... Mais ça veut pas.

    Mon arborescence :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    index.php
    fichier.php
    [include]
    ___config1.php
    ___config2.php
    [répertoire]
    ___sous-index.php
    ___sous-fichier.php


    L'index.php de la racine appelle config1.php par un include, lui-même chargeant config2.php si besoin. Ensuite, le contenu change, selon le fichier du répertoire.

    Problème : je suis en trainb de faire un sous-domaine, donc le fichier d'appel est un niveau plus bas :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    index.php
    fichier.php
    [include]
    ___config1.php
    ___config2.php
    [répertoire]
    ___sous-index.php
    ___sous-fichier.php
    [sous-domaine]
    ___index_SD.php

    Quand je charge index_SD.php (en ajoutant un ../), config1.php est bien inclus, mais ensuite j'ai des erreurs pour config2.php, sans rien changer.

    J'ai l'erreur Warning:
    main(./config.inc.php): failed to open stream: No such file or directory
    Par contre si je met index_SD.php à la racine (sans le ../), cela fonctionne. Je préfère conserver les chemins relatifs, j'ai tout de même essayé en absolu, cela n'a rien résolu.

    Voyez-vous d'où cela peut venir ? J'ai l'impression que partir d'un répertoire au lieu de la racine perturbe tout...

    Merci d'avance

    Jarodd

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    si tu nous montrais le code des include ce serait peut-être plus simple à analyser...

  3. #3
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    include_once("./includes/config1.php");
    include_once("./templates/default/accueil.php");
    ?>
    index_SD.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    include_once("./../includes/config1.php");
    include_once("./../templates/default/accueil.php");
    ?>
    includes/config1.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
     
    // ici définition de quelques constantes
    include_once("./config2.php");
    ?>
    includes/config2.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $dbHost = "";
    $dbName1 = "";
    $dbName2 = "";
    $dbUser = "";
    $dbPassword = "";
    $connexion_bdd = mysql_connect($dbHost, $dbUser, $dbPassword);
    // + définition de variables
    templates/default/accueil.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    + code HTML classique

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Normal car config2.php est appellé avec un chemin relatif "./" et cela devrait etre "../".

    En fait les inclusions se basent sur le fichier appellé en entrée , c'est a dire index_SD et les chemins relatifs (meme les inclusions incluses , attention faut suivre) sont donc toujours '../' dans ce cas.

    tu vas me répondre que ca ne te va pas car du coup quand tu vas appeller index.php, config2 ne va plus passer.
    Deux solutions, soit utiliser des url absolues, soit passer en variable le début du chemin relatif (genre '.' ou '..' ou meme '../..' ) dans tes pages et la faire précéder tes chemins d'inclusions.
    exemple
    index.php:
    $rel ='./'
    include ($rel.'config1.php');
    config1.php
    include ($rel.'config2.php');

  5. #5
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Bonsoir,

    Je ne suis pas sûr d'avoir bien compris ce qu'il fallait faire, et à quoi cela allait servir

    Il faut mettre cette variable au début de chaque fichier et remplacer include (./config1.php'); par include ($rel.'config1.php'); c'est ça ?

  6. #6
    Membre chevronné Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Par défaut
    bonjour,

    Personnellement pour éviter de ne pas me soucier de l'arborescence de mon site, j'utilise le chemin absolue pour faire mes includes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once($_SERVER['DOCUMENT_ROOT']."/templates/default/accueil.php");
    $_SERVER['DOCUMENT_ROOT'] te retourne le chemin absolu de ta racine de ton site

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Par défaut
    Pour completer l'explication de raideman,
    le chemin absolu est le chemin complet du fichier.
    le chemin relatif est le chemin du fichier à trouver par rapport à celui qui l'appelle.
    Ton arborescence :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     index.php
    fichier.php
    [include]
    ___config1.php
    ___config2.php
    [répertoire]
    ___sous-index.php
    ___sous-fichier.php
    [sous-domaine]
    ___index_SD.php
    Premier cas :
    le fichier config1 est inclus dans index.php lorsqu'il s'execute et qu'il demande un include du fichier config2 on se base à la position de index.php pour chercher config2.php

    Second cas : (celui qui plante)
    le fichier config1 est inclus dans index_SD.php, lorsqu'il s'execute et qu'il demande un include du fichier config2 on se base à la position de index_SD.php pour trouver config2.php

    L'erreur provient du fait d'utiliser des chemins relatifs qui se basent sur la position du fichier qui appelle le include.

    C'est pour cette raison qu'on te conseille d'utiliser des chemins absolus, ou de passer en paramètre le chemin du include.

    Pour ma part, je créé un DEFINE contenant le chemin absolu pour chacun de mes dossiers 'sensibles'.

    @++

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2007, 07h49
  2. [MFC] Automation : pb avec #include "excel.h"
    Par Nath71 dans le forum MFC
    Réponses: 2
    Dernier message: 19/09/2005, 09h40
  3. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 15h22
  4. [DLL] PB avec Include (reformulation)
    Par Donut Man dans le forum MFC
    Réponses: 2
    Dernier message: 28/06/2005, 08h16
  5. [Référencement] Gestion des "includes" dans Google
    Par odelayen dans le forum Référencement
    Réponses: 5
    Dernier message: 20/04/2005, 17h07

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