Forum d'entraide PHPFrance

Venez poser vos questions PHP, MySQL, HTML, CSS, Javascript, Gestion de serveurs à la communauté PHPfrance

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

Php et la racine du site

Pour ceux qui débutent en PHP.

Php et la racine du site

Messagepar Maxim 13 Aoû 2005, 17:11

Bonjour

j'aimerais saoir pour quoi en html si on fait

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

cela pointe sur le fichier index du dossier c
pas besoin d'ecrire
<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

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



pourquoi n'est il pas possible de faire

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

Messagepar Invité 13 Aoû 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:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php

include('tutu/autre_script.php')

 


un chemin absolu est le chemin vers ton script à partir de la racine de ton site.
toujours avec le même exemple:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php

include('/chemin/racine/toto/tutu/autre_script.php');

 


imagine maintenant que tu veux appeler script.php à partir de autre_script.php en utilisant un chemin relatif:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php

include('../toto/script.php');

 
Invité
 

Messagepar Invité 13 Aoû 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:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
include('tutu/autre_script.php')
 


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


imagine maintenant que tu veux appeler script.php à partir de autre_script.php en utilisant un chemin relatif:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
include('../toto/script.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
Invité
 

Messagepar Cyrano 13 Aoû 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:
Avatar de l’utilisateur
Cyrano
Ganesha
 
Messages: 19566
Inscription: 07 Fév 2005, 15:27
Localisation: Paris XIII

Messagepar Invité 13 Aoû 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

Syntaxe: [ Télécharger ] [ Masquer ]
Code php

include ($_SERVER['DOCUMENT_ROOT'].'/index.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?
Invité
 

Messagepar reg34000 29 Aoû 2005, 18:57

oui donc un chemein absolu
est fais comme cela

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



mais aussi comme cela

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
/machin/index.php
fonctionne

$_SERVER['DOCUMENT_ROOT']. c'est juste pour le php ou les 2 methodes marches sont identiques
reg34000
Maitre du phpinfo()
 
Messages: 50
Inscription: 14 Aoû 2005, 20:03

Messagepar Xenon_54 29 Aoû 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
Avatar de l’utilisateur
Xenon_54
Magohamoth
 
Messages: 1885
Inscription: 07 Fév 2005, 14:40
Localisation: Qc

Merci

Messagepar Robert 30 Aoû 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:
Robert
 


Retourner vers PHP débutant

Qui est en ligne

Utilisateurs parcourant ce forum: niconicochan et 20 invités