Include dans une arborescence

Bonjour à tous,

Je vous fais un schéma de mon arborescence simplifié avant de vous présenter mon problème

-index.php
---Admin/
-----index.php
---includes/
----navbar.php
---images/
-----logo.png

Le problème, j'ai une navbar avec un logo.png, j'aimerais que l'image s'affiche quand j'includes ma navbar dans l'index de l'admin et celui de la racine.

J'ai essayé une solution qui marche mais qui n'est pas très transportable.
function getRoot()
{
    $folder = "/project/";
    return "http://".$_SERVER['HTTP_HOST'].$folder;
}


Mais j'aimerais une version plus transportable dans la nécessité où je change de répertoire ou que mon arborescence s'agrandi. Biensûr le problème de concerne pas que le logo mais aussi les liens vers les autres pages.

J'ai déjà regarder les variables magiques dans le manual php mais le problème c'est qu'il ne me faut pas
C:\wamp\www\project\includes
mais
C:\wamp\www\project\

Je suis donc bloqué et je ne comprends pas comment avoir des includes propres pour toute l'arborescence.

Merci pour votre aide.
Damien Claeyman

1 réponse

  1. Modérateur
    Bonjour,

    Evite d'utiliser le chemin absolue à partir du c:\
    Evite aussi d'utiliser les URL

    Normalement, tu peux simplement utiliser directement :
    $path = "project/includes/logo.png
    


    Tu peux aussi utiliser la variable $_SERVER
    $path = $_SERVER["DOCUMENT_ROOT"]."/project/includes/logo.png
    


    0
    1. Merci pour ta réponse je pense que la seconde solution est peut etre la bonne. Je l'avais envisagé, le problème c'est qu'il faut spécifié project et c''est ce que voulais éviter. Sinon tu mals compris min arborescence la photo ce trouve à l'adresse :
      $path = $_SERVER["DOCUMENT_ROOT"]."/project/images/logo.png

      et le problème est là c'est qu'il faut remonter de un dans l'arborescence pour trouver le dossier photo
      0
    2. Modérateur
      Tu es obligé d'indiquer "projet"....
      A moins que tu ne définissent un virtualHost pour accéder à ton site....
      Dans ce cas, le DOCUMENT_ROOT deviendra directement "project"

      Une autre solution serait que lorsque tu ouvre ton site (via le index.php par exemple) tu initialises une variable de SESSION contenant l'emplacement "root" de ton site... et que pour tes includes tu utilises cette variable directement.
      Bien entendu, le "project" pourrait provenir d'une variable qui se trouverait dans un fichier de configuration... au même titre que tu gères les informations de connexion à ta bdd..
      0
    3. Merci beaucoup Jordane je pense m'orienter sur cette voie ;)
      0