Php et la racine du site

Maxim
Invité n'ayant pas de compte PHPfrance

13 Août 2005, 17:11

Bonjour

j'aimerais saoir pour quoi en html si on fait

Code : Tout sélectionner

<A HREF=/a/b/c/>

cela pointe sur le fichier index du dossier c
pas besoin d'ecrire

Code : Tout sélectionner

<A HREF=/a/b/c/index.php>


Jusque la je dis pas de betises ???? ou j'en dis deja lol


pourquoi en php faut il pour faire une include forcement faire le code suivant

Code : Tout sélectionner

<?php include ($_SERVER['DOCUMENT_ROOT'].'/index.php'); ?>



pourquoi n'est il pas possible de faire

Code : Tout sélectionner

<?php include (/a/b/c/); ?>


Il semble que php ne parte pas de la racine ?
et il ne prend pas automatiquement le fichier index contenu dans le dossier c

c'est bien cela ?

Invité
Invité n'ayant pas de compte PHPfrance

13 Août 2005, 18:40

confond pas chemin relatif et absolu(ce qui m'avait été expliqué sur ce forum d'ailleurs).

un chemin relatif part de l'endroit de ton script(ou de ton code html pour les liens par exemple).
ex:
ton script est placé sur /chemin/racine/toto/script.php
si tu appel un autre fichier placé sur /chemin/racine/toto/tutu/autre_script.php
à partir de script.php tu pourras faire:
[php]
include('tutu/autre_script.php')
[/php]

un chemin absolu est le chemin vers ton script à partir de la racine de ton site.
toujours avec le même exemple:
[php]
include('/chemin/racine/toto/tutu/autre_script.php');
[/php]

imagine maintenant que tu veux appeler script.php à partir de autre_script.php en utilisant un chemin relatif:
[php]
include('../toto/script.php');
[/php]

Invité
Invité n'ayant pas de compte PHPfrance

13 Août 2005, 19:37

Anonymous a écrit :confond pas chemin relatif et absolu(ce qui m'avait été expliqué sur ce forum d'ailleurs).

un chemin relatif part de l'endroit de ton script(ou de ton code html pour les liens par exemple).
ex:
ton script est placé sur /chemin/racine/toto/script.php
si tu appel un autre fichier placé sur /chemin/racine/toto/tutu/autre_script.php
à partir de script.php tu pourras faire:
[php]
include('tutu/autre_script.php')
[/php]

un chemin absolu est le chemin vers ton script à partir de la racine de ton site.
toujours avec le même exemple:
[php]
include('/chemin/racine/toto/tutu/autre_script.php');
[/php]

imagine maintenant que tu veux appeler script.php à partir de autre_script.php en utilisant un chemin relatif:
[php]
include('../toto/script.php');
[/php]




quelle est la différence avec

<?php include ($_SERVER['DOCUMENT_ROOT'].'/index.php'); ?>


pour un chemin absolu

quelles sont les différences entre les deux methodes

Avatar de l’utilisateur
Mammouth du PHP | 19613 Messages

13 Août 2005, 19:54

Un chemin relatif est relatif par rapport à un point de départ, donc le script en cours.

Un chemin absolu n'est relatif à rien, il est du type "http://site.com/page.html"

$_SERVER['DOCUMENT_ROOT'] va indiquer le répertoire racine du site. On crée donc un chemin relatif par rapport à ce répertoire racine. Fais un phpinfo() pour t'en convaincre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

13 Août 2005, 20:04

Anonymous a écrit :quelle est la différence avec

<?phpinclude ($_SERVER['DOCUMENT_ROOT'].'/index.php'); ?>


pour un chemin absolu

quelles sont les différences entre les deux methodes

[php]
include ($_SERVER['DOCUMENT_ROOT'].'/index.php');
[/php]
...correspond à un chemin absolu.

$_SERVER['DOCUMENT_ROOT'] est juste là pour t'amener vers le répertoire racine d'apache pour ton site(bien utile pour les hébergements mutualisés vu que tu ne peux pas te balader dans l'arboréscence du serveur qui t'héberge, si ce n'est à l'intérieur du répertoire qui t'appartient, pour connaître ce chemin).
si tu ne l'a pas déja fait, fait un echo($_SERVER['DOCUMENT_ROOT']) à partir de différents répertoires de ton site.
http://fr2.php.net/manual/fr/reserved.v ... les.server

ensuite c'est à toi de voir quelle méthode tu veux employer suivant la position du script qui appel et du script qui est appelé, ou bien de tes préférences, les deux marchent très bien.

est ce que ça répond à ta question?

Eléphanteau du PHP | 50 Messages

29 Août 2005, 18:57

oui donc un chemein absolu
est fais comme cela

Code : Tout sélectionner

include ($_SERVER['DOCUMENT_ROOT'].'/machin/index.php');



mais aussi comme cela

Code : Tout sélectionner

include ('/machin/index.php');


qu'elle est la différence entre les deux, je suis chez un hebergeur mutualisé mais en html mes liens absolu

Code : Tout sélectionner

/machin/index.php
fonctionne

$_SERVER['DOCUMENT_ROOT']. c'est juste pour le php ou les 2 methodes marches sont identiques

Avatar de l’utilisateur
Mammouth du PHP | 1885 Messages

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.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Robert
Invité n'ayant pas de compte PHPfrance

30 Août 2005, 06:04

Xenon_54 a écrit :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.


Bonjour,

J'ai fais une recherche Google à propos des liens php et http pour revenir à la racine du site et je suis arrivé ici !

Je voulais juste vous remercier pour ce bon post ou j'ai trouvé mon bonheur :wink:

Encore merci, ça fait chaud au coeur de voir des développeurs si dévoués.


:wink: