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 :

Chemin du fichier à lire


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Chemin du fichier à lire
    Bonjour,

    je me retrouve devant un casse-tête et j'espère qu'il y a une méthode/solution !
    Disons que j'ai 2 pages (a 2 emplacements différents) qui chargent un même script php.

    ¤ index.php à la racine du site qui inclus pageX.php se trouvant dans un dossier "php" de cette manière :
    index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if (file_exists("php/pageX.php")) {
        include("php/pageX.php");
    }
    ?>
    ¤ pageA.php dans un dossier "dossier" qui inclus pageX.php de cette manière :
    dossier/pageA.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if (file_exists("../php/pageX.php")) {
        include("../php/pageX.php");
    }
    ?>
    Jusqu'ici pas de problème... le souci vient du fait que pageX.php doit charger le contenu d'un *.txt de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = file_get_contents("php/fichier.txt");
    Du coup, le ciblage est forcément faux pour l'un des 2 appels.
    Dans le cas présent, c'est l'appel de pageA.php qui ne peut pas fonctionner car il ne se trouve pas au même endroit que le dossier php.

    Y a-t-il une astuce, une méthode pour pallier à ces désagréments ?


    Merci d'avance.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    J'ai déjà eu le même genre de désagrément.
    Je me souviens plus du détail, mais j'avais mis le traitement "sensible" dans une fonction, qui prenait en paramètre le répertoire de travail du script courant, à partir duquel travailler.

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    merci Eusebius pour ta participation

    y aurait pas une méthode pour cibler toujours à partir de la racine du site ?
    moi, je pensais que :
    ../ : remonté d'un niveau
    ./ : dossier actuel
    / : racine du site (ce qui d'après mes tests est inexact... )

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    ah si, normalement en commençant par un slash c'est un chemin absolu... [edit : uniquement sous UNIX, merci Taum] Moi je ne l'avais pas utilisé parce que j'avais besoin que ça reste portable lors d'une migration.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Tu peux utiliser la constante __FILE__ qui contient toujours le nom (chemin complet) du fichier courant. De plus on peut extraire le dossier avec dirname().
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    php/pageX.php:
    -------------
    // Appellera toujours php/fichier.txt, quelque soit le fichier qui inclus
    $texte = file_get_contents(dirname(__FILE__).'/fichier.txt');
    Une autre solution est de définir une constante dans tes pages (ou dans un fichier de config) que tu utiliseras partout.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    config.php:
    ----------
    define('APP_ROOT', dirname(__FILE__)); // Vaudra toujours le dossier racine de l'application
     
    php/pageX.php:
    -------------
    $texte = file_get_contents(APP_ROOT.'/fichier.txt'); // Pas d'ambiguité puisqu'on utilise la constante prédéfinie

    Quand au "/" simple, il designe la racine du site en HTML seulement. Pour le système de fichier local, c'est la racine du système de fichier sur unix mais pas pour windows (qui utilise C:\, D:\ etc..).
    En d'autres termes, tu peux utiliser en HTML (<a href="/page.html">) mais pas en PHP (fopen("/page.html")).


    cf. aussi http://php.developpez.com/faq/index....riptdansscript qui propose d'utiliser $_SERVER['DOCUMENT_ROOT'], et oui en PHP aussi there's more than one way to do it

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Merci Taum
    avec toutes ces précisions, je devrais arranger la chose...

    Encore merci à vous deux !

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

Discussions similaires

  1. récuperation de chemin de fichiers !!!
    Par massiliaman dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/07/2007, 18h17
  2. Réponses: 3
    Dernier message: 21/06/2005, 16h18
  3. [SAX] Chemin du fichier XML
    Par mikemikemike dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/11/2004, 15h04
  4. [Fichier] Lire le contenu d'un fichier
    Par bart64 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 19/09/2004, 18h18
  5. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 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