par
Xenon_54 » 29 août 2005, 19:14
Bonjour,
Attention, il ne faut pas confondre les deux "environnements". L'un est à rapport au lien HTTP et un autre à rapport au système de fichier du serveur.
Lien HTTP <a href="">
/a/b/c/ -> Fait référence à la racine du domaine (à moins qu'une balise <base> modifie le chemin de base)
a/b/c/ -> Fait référence au répertoire en cours
Système de fichier include() et autres
/a/b/c/ -> Fait référence à la racine même du serveur (donc peut être à l'extérieur du domaine public
a/b/c -> Fait référence au répertoire en cours.
La raison pourquoi tu obtiens le fichier index.php avec un lien HTTP et non avec le système de fichier est bien simple:
Tous les liens HTTP passe nécessairement par le serveur Web (Apache dans la plupart des cas) et celui-ci permet de définir dans son fichier de configuration un fichier qui sera appellé automatiquement si aucun ne spécifié. Autrement dit, dès que tu fais un appel direct à un dossier, il récupère de manière automatique le fichier index.php
Dans le cas du système de fichier, les fonctions comme include() ne passe pas par Apache et donc aucun fichier par défaut ne sera appellé. C'est pour ça que tu dois obligatoirement indiquer quel fichier tu désires accéder.
De plus, contraiement à ce que plusieurs ont pu indiquer, tu ne peux pas faire /a/b/c/index.php en espérant que ce chemin soit
http://domain.com/a/b/c/index.php.
Pour que ce soit valide, il faudrait que la directive include_path du fichier de configuration php.ini de PHP soit défini de manière à ce que le dossier racine du domaine fasse partie des chemins où PHP recherchera pour le fichier. Et encore là puisque c'est un chemin absolu...
Donc il ne faut pas confondre les deux puisque vous risquerez fort de vous y perdre.