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 :

Trouver le répertoire qui suit public_html/sub1/ [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Trouver le répertoire qui suit public_html/sub1/
    Bonjour, j'ai besoin de trouver le sous-répertoire juste après public_html.

    public_html est le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['DOCUMENT_ROOT']
    et c'est le sous répertoire qui suit ça que j'ai besoin de trouver.

    Toutes les commandes me donne à partir du dernier répertoire de droite à gauche, j'ai besoin de gauche à droite.

    document_root/cerépertoire/unautre/jesuisici/...

    Ce que j'essaie de faire, c'est de placer dans une variable "cerépertoire" car mon script se trouvera là et non dans la racine afin d'appeler corectement mes fichiers avec un require_once("...") .
    Quand le fichier convoité est dans le même répertoire c'est facile.

    Aucun n'y fait:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    echo dirname(__FILE__);
    ?>
     
    <br>
    <?php
    echo basename(__FILE__);
    ?>
     
    <br>
    <?php
    echo $_SERVER['HTTP_HOST'];
    ?>
     
    <br>
    <?php
    echo $_SERVER['PHP_SELF'];
    ?>
     
    <br>
    <?php
    echo $_SERVER['REQUEST_URI'];
    ?>
     
    <br>
    <?php
    echo basename(dirname(dirname(__FILE__)));
    ?>
     
    <br>
    <?php
    echo dirname(__FILE__,3);
    ?>
     
    <br>
    <?php
    echo $_SERVER['DOCUMENT_ROOT'];
    ?>
     
    <br>
    <?php
    echo dirname(__FILE__).DIRECTORY_SEPARATOR;
    ?>
     
    <br>
    <?php
    $t = explode("/",dirname(__FILE__));
    print_r($t);
     
    echo $t[4];
     
    ?>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    vous pouvez aussi définir un répertoire relatif au répertoire du fichier actuel avec __DIR__ et .. par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require __DIR__ . "/../../repertoire/fichier.php";

  3. #3
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Bonjour

    Souvent on n'a pas besoin de le savoir. Je rejoins Mathieu ici, càd que si tu travailles en relatif, c'est suffisant.

    Note aussi : si tes fichiers sont des classes php, en fait, tu ne dois même plus t'ennuyer avec les require_once pour chaque fichier car c'est le job de "composer".

    Composer s'apprends et cela demande du temps (qui sera terriblement bien investi si tu penses développer davantage en php) mais, dans ce contexte, tu fais un seul require_once (pour vendor/autoload.php) et ensuite tu n'as plus à t'embêter avec "mais où se trouve telle classe"; composer s'en charge pour toi.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  4. #4
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Bonjour, le code va me donner ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo __DIR__  .   "/fonctions/display.php"
     
    public_html/V2/include/d/sd/ddd/fonctions/display.php
    Ce que j'ai besoin d'avoir, ce n'est que le répertoire /V2/ ou simplement V2
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  5. #5
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Bonjour

    Voici une astuce: strrev qui permet de renverser une chaîne de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php$path = 'public_html/V2/include/d/sd/ddd/fonctions/display.php';
     
     
    echo strrev($path);
    donne php.yalpsid/snoitcnof/ddd/ds/d/edulcni/2V/lmth_cilbupEt à partir de maintenant, on joue avec dirname et basename:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php$path = 'public_html/V2/include/d/sd/ddd/fonctions/display.php';
     
     
    echo strrev(basename(dirname(strrev($path))));
    Voici le code exécutable en ligne : https://onlinephp.io/c/50cb9

    Tu isoles donc bien la partie du tu souhaitais.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  6. #6
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Bon enfin, j'ai fini par trouver la solution à force de tests.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    const DELIMITER_URL = '/';
    $testURL = $_SERVER["PHP_SELF"];
    var_dump(explode(DELIMITER_URL, trim($testURL, DELIMITER_URL))[0]);
    ?>
    Cela va me donner le répertoire juste après de mon "DOCUMENT_ROOT" public_html dans mon cas. 0 si je mets 1, ça me donne le répertoire plus bas. etc. Peut-importe d'où je vais me situer dans le chemin. /public_html/V2 sans les /.

    PS, je ne trouve pas le bouton RÉGLÉ.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  7. #7
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Citation Envoyé par dancom5 Voir le message
    Bon enfin, j'ai fini par trouver la solution à force de tests.
    As-tu vu ma proposition?
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  8. #8
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Oui, c'est quelque chose qui fonctionne, merci.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

Discussions similaires

  1. méthode pour trouver les répertoires qui ne contiennent pas
    Par carles38150 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 23/03/2020, 21h51
  2. [DOM] DOM : Trouver le champ qui suit un champ
    Par pekka77 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 06/09/2006, 19h22
  3. Fenêtre (sorte de popup) qui suit la souris en onmouseover
    Par yoyot dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2005, 09h52
  4. Réponses: 3
    Dernier message: 21/01/2004, 08h47
  5. Comment trouver le répertoire démarrage sous 98?
    Par PHILOSOPHE dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 18/11/2003, 20h10

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