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 :

Comment et ou stocker le path de votre site ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 59
    Points : 27
    Points
    27
    Par défaut Comment et ou stocker le path de votre site ?
    Bonjour à tous,

    Je me trouve confronté à un problème de gestion de path.
    Depuis que mon site est en ligne, j'ai besoin de faire des essais avant de mettre en ligne. J'ai donc créé à la racine un nouveau répertoire au nom de "essai".
    Mais tous mes paths vont vers le site de référence.

    Je sens que c'est un problème de base, mais ...
    Par défaut dans mon code, je récupère le path de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['DOCUMENT_ROOT']."/monrep_officiel/rep2/rep3/...
    Aujourd'hui, il me faudrait modifier, dans tout mon code, ce chemin pour obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['DOCUMENT_ROOT']."/essai/rep2/rep3/...
    Mais je ne vais pas modifier à chaque fois que je fais des tests en ligne !!
    Je cherche donc une solution automatique pour avoir directement le path en fonction du répertoire dans lequel on se trouve.

    J'ai eu plusieurs idées, mais j'avoue que je ne sais pas laquelle est la plus adaptée :
    1. par cookies, je stocke le path comme ceci
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $_COOKIES['path'] = "/htdocs/public/www/monrep_officiel/
      dans ce cas, j'aurai juste à modifier "monrep_officiel" par essai et au lieu de faire un $_SERVER['DOCUMENT_ROOT'] dans mon code, je ferai appel à mon cookies de cette manière :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $_COOKIES['path']."/rep2/rep3/..."
    2. la même chose avec les sessions
    3. trouver une super méga variable (genre global) qui sera initialisée au lancement du site et qui sera vu par tout le code (classe y compris) ... mais je doute que cela soit possible


    Alors que faire ???
    Les cookies ne sont-ils pas réservé à des informations client ?
    Mais comment faites-vous ??

    Merci pour vos lumières

    Cyril

  2. #2
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    dirname(__FILE__) te donne le répertoire du script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo dirname(__FILE__); 
    ?>
    tu peux donc identifier si tu en "essais" ou "autre"
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    oui c'est vrai, tout comme getcwd() d'ailleurs !

    mais cela ne m'arrange pas car il retourne tous les répertoires (donc rep2/rep3 etc ...).

    Ce qui veut dire que, selon l'endroit ou nous nous trouvons dans le serveur, le path pourra être différent
    Selon la provenance, le chemin sera différent pour une même fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dirname(__FILE__)."/../../toto.php"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dirname(__FILE__)."/../toto.php"
    On a ce cas par exemple lorsque
    dans toto.php (supposons que truc.txt soit à la racine):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function t()
    {
       file_exists (dirname(__FILE__)."/../truc.txt")
    }
    si la fonction t() est appelée à partir de ./rep2/rep3/toto.php alors le chemin de truc.txt sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_exists (dirname(__FILE__)."/../..truc.txt")
    si la fonction t() est appelée à partir de /rep2/tata.php alors le chemin de truc.txt sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_exists (dirname(__FILE__)."/../truc.txt")
    Vous avez surement tous rencontré ce problème ?

    Donc dirname(__FILE__) ne résoud pas mon problème ??

    (Ne me dites pas de faire un explode pour trouver le premier rep )

  4. #4
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu peux utiliser la définition d'une constante utilisable partout dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    $SERVER="essais";
    if($SERVER=="essais")
    {
    	DEFINE("ROOT",$_SERVER['DOCUMENT_ROOT']."/essai/");
    }else{
    	DEFINE("ROOT",$_SERVER['DOCUMENT_ROOT']."/monrep_officiel/");
    }
     
     
    function MonServeur()
    {
    		echo ROOT."/monfichier.php";
    }
     
    MonServeur();
    ?>
    tu peux lier la définition au nom de serveur par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($_SERVER['SERVER_NAME']=="localhost")
    {
    	DEFINE("ROOT",$_SERVER['DOCUMENT_ROOT']."/essai/");
    }else{
    	DEFINE("ROOT",$_SERVER['DOCUMENT_ROOT']."/monrep_officiel/");
    }
    ou a son ip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($_SERVER['SERVER_ADDR']=="127.0.0.1")
    {
    	DEFINE("ROOT",$_SERVER['DOCUMENT_ROOT']."/essai/");
    }else{
    	DEFINE("ROOT",$_SERVER['DOCUMENT_ROOT']."/monrep_officiel/");
    }
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/03/2009, 11h03
  2. [Débutant] Comment lire et stocker un fichier en J2ME?
    Par noutnout53 dans le forum Java ME
    Réponses: 7
    Dernier message: 08/06/2008, 12h57
  3. comment réccupérer la valeur de path
    Par syrette dans le forum Général Java
    Réponses: 2
    Dernier message: 04/06/2008, 11h24
  4. Réponses: 2
    Dernier message: 09/05/2008, 09h43
  5. Réponses: 2
    Dernier message: 12/09/2005, 16h48

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