Jump to content
Sign in to follow this  
Bozo

Trouver le répertoire racine

Rate this topic

Recommended Posts

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.

Edited by Bozo

Share this post


Link to post
Share on other sites

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...)

Share this post


Link to post
Share on other sites

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 :

<?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.

Edited by Bozo

Share this post


Link to post
Share on other sites

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. @+

Share this post


Link to post
Share on other sites

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/

Share this post


Link to post
Share on other sites

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 ! @+

Share this post


Link to post
Share on other sites

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: car tu parles de plusieurs sites, mais dans tes exemples tu prends le même nom de domaine... :blink: Ou alors serais-tu en multidomaine?)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...