Version complète: sur le forum Webmaster Hub : Trouver le répertoire racine
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Bozo
Bonjour,

Je souhaiterais connaître une méthode en php pour trouver le nom du répertoire racine d'un site web. Par exemple, pour http://perso.truc.fr/nom_site/, je voudrais obtenir "nom_site".

Merci.
Remi
Je ne suis pas certain d'avoir bien compris ta question, mais pour avoir le nom du répertoire racine d'un serveur, il faut utiliser:
$_SERVER['DOCUMENT_ROOT']
qui donne le chemin complet jusqu'au répertoire courant, ou encore
$_SERVER['SCRIPT_FILENAME']
qui donne le chemin complet du script PHP en cours.

Par contre pour faire ce tu indiques dans ton exemple, tu peux utiliser la fonction dirname().
dirname($_SERVER('SCRIPT_URL')) donnera le résultat que tu indiques dans ton exemple (avec un / au début...)
Bozo
Je vais préciser un peu ma question. Je souhaite faire un site web susceptible d'être installé à différentes URL : htlp://www.mon_site.com, htlp://www.mon_site.com/rep1/ ou encore htlp://www.mon_site.com/rep1/rep2/, je ne peux pas bien savoir à l'avance. Le site doit fonctionner à n'importe lequel de ces endroits.

Dans la plupart des pages du site, j'ai besoin de faire appel à un même groupe de scripts (pour restreindre l'accès aux seuls utilisateurs autorisés). Ces scripts, je comptais les mettre dans un répertoire juste en-dessous du répertoire racine. Ensuite, dans chaque page, je voulais mettre une commande :

CODE
<?php include("$racine/scripts/script1.php"); ?>


Ceci ne marche qu'à la condition que $racine prenne pour valeur la chaîne représentant le répertoire racine, c'est-à-dire "/", "/rep1" ou "/rep1/rep2", respectivement pour les adresses données au-dessus.

Voilà, je ne sais pas si ce problème a une solution. Il faudrait pouvoir indiquer au serveur php qu'il héberge plusieurs sites distincts, etc... Il y a peut-être aussi des solutions totalement différentes de faire.
AvenueDuWeb
Le plus simple, c'est d'utiliser les répertoires include. La plupart des hébergeurs proposent un répertoire include (parfois même plusieurs) ! Ainsi pour faire appel à ton fichier script1.php à partir de n'importe quel répertoire il te suffit de faire :

include ('script1.php');

Il cherchera d'abord si tu as un fichier script1.php ds le répertoire courant, si c'est le cas, ce sera ce fichier qui sera appelé, sinon il ira chercher dans le répertoire include ! Sinon bien sûr tu peux utiliser $_SERVER['DOCUMENT_ROOT'] comme l'a dit Remi mais si ton hébergeur propose les répertoires include à mon avis c'est la meilleure solution. @+
Bozo
Mon hébergeur propose bien les répertoires include, ça devrait régler mon problème. Par contre, je n'ai pas réussi à utiliser $_SERVER['DOCUMENT_ROOT']. Ca me renvoie un répertoire Unix du type :

/data/members/free/hebergeur/fr/p/o/s/mon_site/htdocs/
AvenueDuWeb
C'est normal que ça te renvoie un répertoire unix, normalement c'est le répertoire racine de tes fichiers quand tu tapes http://www.tondomaine.com il va chercher le fichier index.php dans le répertoire $_SERVER['DOCUMENT_ROOT'], c'est le chemin complet, pas relatif. Mais à mon avis l'utilisation du répertoire include c'est le plus simple ! @+
Remi
La solution du répertoire include est une bonne solution.
Mais si tu es toujours dans le même nom de domaine, tu peux utiliser le simple adressage en "base relative" :
<?php include("/scripts/script1.php"); ?>

(mais bon, je ne suis toujours pas certain d'avoir bien compris... 1eye.gif car tu parles de plusieurs sites, mais dans tes exemples tu prends le même nom de domaine... blink.gif Ou alors serais-tu en multidomaine?)
Anonymus
Bonjour,


il faut que, d'un coté tu définisses une 'constante' :
define("REPERTOIRE_RACINE","/home/);

et d'un autre coté, à chaque fois que tu en as besoin, tu fais appel à ce répertoire :
include(REPERTOIRE_RACINE."fichier.php");

Ainsi, tu as besoin de peu de changements pour héberger ton site sur un autre serveur.
Tu peux aussi, ainsi, faire l'ensemble des dossiers de ton répertoire.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.