Bonjour,

Voilà, je ne suis même pas au stade de l'embryon dans le monde du webmastering et après lectures en tous genres, j'ai une question sans doute totalement idiote :
Est-ce que le répertoire dans lequel se trouve un index.qqch est la racine du site ? Autrement dit, est-il exact d'écrire les chemins absolus à partir de ce même niveau ?
P.ex. si j'ai :

a) httpdocs
---b)index.php
---b)dossier-includes
---------c)menu.php
---b)dossier autres
----------c) page 1
----------c) page 2
----------c) sous-dossier trucs
----------------d) page truc1
----------------d) page truc 2


Est-il exact d'écrire
  <?php include ('/dossier-includes/menu.php'); ?>
pour avoir le chemin depuis la racine ? Et ce depuis n'importe quelle "page x" ?
Je n'y arrive pas.
Ça fonctionne en chemin relatif, mais sur le principe, j'ai dû rater une étape.

Si quelqu'un accepte d'éclairer ma lanterne, ce sera apprécié,
Merci beaucoup.
Modifié par juniorjunior (23 Jan 2008 - 03:49)
Bonjour,

moi je fais tout en chemins relatifs comme cela pas de pb quand tu mets ton site chez ton hébergeur ...

Cela donne donc :

<?php include ('./dossier-includes/menu.php'); ?>



Bon courage Smiley cligne
Administrateur
Bonjour et bienvenue, Smiley smile

juniorjunior a écrit :
Est-il exact d'écrire
  <?php include ('/dossier-includes/menu.php'); ?>
pour avoir le chemin depuis la racine ? Et ce depuis n'importe quelle "page x" ?
Je n'y arrive pas.
Ça fonctionne en chemin relatif, mais sur le principe, j'ai dû rater une étape.

Hormis pathinfo() et realpath() qui traitent du vrai chemin sur le serveur (le chemin que voit l'OS hébergeant le serveur), c'est exact.
-http://www.domain.tld/truc
pour le visiteur est équivalent pour PHP à
/truc
et pour l'OS hébergeant le serveur à
/nimportequelchemin_genre_home-www/truc

Sur les serveurs partagés, le FTP est souvent configuré pour arriver directement sur le / que comprendra PHP, c'est plus rare qu'il pointe un répertoire au-dessus (pour toi sur httpdocs) mais ça change rien au reste Smiley smile

eebee> Le chemin que tu donnes est relatif (par rapport au répertoire actuel) mais ton include() ne fonctionnera que depuis la racine du domaine, pas depuis un sous-répertoire. En aucun cas tu ne remontes l'arborescence avec cette syntaxe.
Modifié par Felipe (23 Jan 2008 - 11:15)
Felipe, je crois que tu t'es planté (ou alors j'ai mal lu?). En PHP, / correspond à la racine du système de fichier du serveur.

Pour les navigateurs web, par contre, / correspond à la racine du domaine ou du sous-domaine.

Pour plus d'informations, voir la FAQ qui récapitule déjà ça très bien. Smiley smile
Merci beaucoup pour les réponses. Je tente d'y voir clair, mais j'avoue que j'ai un peu de mal. (En relatifs c'est ok, mais le coup de l'absolu...)

J'essaie de comprendre un peu le truc, juste par tête de mulisme aigu. Smiley smile
J'ai aussi lu, entre autres, la FAQ, notamment ceci
a écrit :
*En php {...} Le chemin absolu : /dossier/page.php
La cible va être cherchée en partant de la racine du système de fichiers : /.
Par exemple sous Windows : include('/inc/menu.php'); équivaudrait à C:\inc\menu.php et non pas à http://www.domaine.fr/inc/menu.php
Pour obtenir la racine du serveur web, utilisez la variable $_SERVER['DOCUMENT_ROOT'] en préfixe del'antislash ().
Et c'est précisément là que je ne saisis pas.
Ça veut dire qu'un
<?php include ('/dossier-includes/menu.php'); ?>
ne peut pas être utilisé tel quel pour remonter à la racine ? A la différence d'un "simple" href p.ex dans mon code ou là
/dossier/page.html
serait équivalent à
  http://www.nomdedomaine.truc/dossier/page.html
? (euh, je n'sais pas si c'est très clair ce que je dis là Smiley confused ).

Et pour embrouiller encore un peu mes neurones, si faisais un
<?
echo $_SERVER['DOCUMENT_ROOT'];
?>
et que j'écrivais le chemin obtenu là
<?php include ('toutlecheminobtenu/dossier-includes/menu.php'); ?>
, ça vaudrait quelque chose ou ce serait de la marmelade de code d'abruti inefficace ? Smiley confus
Merci de votre secours ! Smiley smile
Modifié par juniorjunior (23 Jan 2008 - 16:15)
Salut,

comme l'a expliqué Florent, il faut faire la différence entre racine du système de fichier et racine du serveur web.

La variable $_SERVER['DOCUMENT_ROOT'] permet de faire le lien entre les deux : en partant de la racine du système de fichier, il "suffit" de suivre le chemin indiqué par $_SERVER['DOCUMENT_ROOT'] pour arriver au dossier racine du serveur web.

Dans ton cas, en supposant que le dossier 'include' est à la racine du domaine (juste à côté de ton fichier index.php, quoi) tu devrais utiliser ceci :

<?php include($_SERVER['DOCUMENT_ROOT'].'/dossier-includes/menu.php');