PHP La différence entre les chemins complets et relatifs. Le système de fichiers est également sur place.


votre site existe comme si en deux dimensions.
Réel et virtuel.

Pour tous les visiteurs - est un serveur web virtuel. Qui se caractérise, entre autres, le fait qu'il ne soit pas un fichier existant. si vous écrivez <a href="http://site.ru/file.html" target="_blank">http://site.ru/file.html - il est pas un fichier. Cet URI, l'adresse virtuelle. Aucun fichier appelé file.html sur le serveur peut ne pas être. Il est de toutes les adresses virtuelles, plutôt que des fichiers.
Et le navigateur pour travailler avec des adresses.

Pour Developer même site - un programme qui fonctionne sur un ordinateur réel tout à fait spécifique. Avec un disque dur spécifique de la marque, des répertoires et des fichiers. Et le script, travailler avec vos données, le chargement d'autres scripts, il travaille avec des fichiers réels sur le disque physique.

Il est dans cette différence et mensonge difficultés souvent rencontrées par les nouveaux arrivants.
fichiers Losing, des liens confondre avec les fichiers, reportez-vous aux fichiers locaux via HTTP, ou inklyudyat fichiers à partir de la racine du serveur Web.

Dans l'ensemble, il est nécessaire de bien comprendre deux choses:
1. Distinguer entre la racine du serveur web, comme on le voit par le navigateur et le système de fichiers racine sur le disque.
2. Le chemin relatif de la différence absolue.

Commençons par la seconde.
Il est très simple. Si le chemin d'accès spécifié par la racine du système, il est un chemin absolu. Il est comme une adresse postale dans la vraie vie - où vous ne voudriez pas aller, mais l'adresse exacte, vous trouverez toujours exactement au bon endroit.
exemples de chemins absolus:
/var/www/site/forum/index.php
/img/frame.gif
с:\windows\command.com
/var/www/site/forum/index.php
/img/frame.gif
с:\windows\command.com
dans les systèmes et les sites Web racine à base d'Unix est notée par une barre oblique - "/".
Ceci est important. Il ne suffit pas d'une baguette et un moyen d'adressage séparé.
Dans une adresse http://www.site.ru/ dernière barre oblique - pas pour la beauté! Il se réfère à une adresse très spécifique - le début du site.
Sur le lecteur dans les systèmes Unix, vous pouvez taper "cd /" et vous allez dans le répertoire racine.
Dans les systèmes vindous système de fichiers est divisé par les disques, donc dans l'adresse absolue est nécessaire de spécifier la lettre de lecteur. racine absolue du système de fichiers vindous pas, chaque lecteur - la sienne. Par exemple, C: \ E: \
par conséquent, même si le chemin vers vindous commence par une barre oblique, il est pas un chemin absolu et relatif. En ce qui concerne le disque actuel. Un départ parfait avec une lettre.

Si, au début du chemin de la racine ne soit pas spécifié, ce chemin est relatif, et il dostaivaetsya à partir de la position actuelle. Dans la vraie vie, ce rappelle le chemin vers le magasin d'alcool - "deux blocs à gauche et à droite il y a tout le temps." Atteindre un tel chemin que d'un point spécifique. De l'autre, vous entrez est déjà dans un endroit très différent.
L'exemple le plus simple d'un chemin relatif - il est juste un nom de fichier.
Si le fichier est situé dans le même répertoire dans lequel le programme fonctionne - il lui sera, en ajoutant le chemin d'accès au nom de fichier.
Des exemples de chemins relatifs:
file.php (drisse est dans le même dossier)
./file.php (drisse est dans le même dossier. Ce dossier est parfois nécessaire dans certains systèmes Unix)
images/picture.jpg (le fichier est dans les images de kapok, qui est dans le courant)
../file.php (le fichier est dans un dossier qui est un niveau au- dessus du courant)
../../file.php (le fichier est dans un dossier qui se trouve sur deux niveaux au- dessus du courant)

Et le système d'exploitation et le navigateur que vous rencontrez un chemin relatif à la finition absolue construction. mais tout le monde - à sa manière.

Nous passons maintenant à la première question.
La différence de la racine, comme on le voit par un navigateur du serveur web, et le système de fichiers racine sur le disque.
En général, les explications précédentes ont tout devrait être clair.
Sur le chemin du lecteur vers le script peut être:
/var/www/site/forum/index.php Dans le même temps, l'adresse virtuelle du script lorsqu'il est vu à travers le navigateur est:
http://www.site.ru/forum/index.php Cet exemple est facile de voir où les deux mesures se croisent: ces deux endroits ont une partie commune - /forum/index.php - et il est tout simplement une source de confusion.
Pour le navigateur est le chemin complet, qui ne peut être. Elle commence à partir de la racine du site.
Pour le même script exécuté sur un serveur - il est juste une partie du chemin.
pour le script chemin /forum/index.php serait inexistante - dans le répertoire racine ne forum!
pour obtenir le chemin complet du fait que le site ressemble à /forum/index.php , il est nécessaire de le fixer sur le chemin de gauche dans le dossier, qui est considéré comme kornevaoy serveur web entier.
dans notre exemple - est
/var/www/site , ce chemin est défini dans le serveur web kofiguratsii et qu'il est contenu dans la variable système, le PHP $_SERVER [ 'DOCUMENT_ROOT' ] $_SERVER [ 'DOCUMENT_ROOT' ]

Le serveur virtuel est - est que l'utilisateur voit - au contraire, il n'y a pas de disque. Il y a un site racine. Cela est, pour toute référence garanti, quel que soit le site d'un espace qu'elle est appelée, elle doit être absolue.
Si vous avez un site a, par exemple, deux sections:
http://www.site.ru/about/info.php
et
http://www.site.ru/job/vacancy.php
puis, si le fichier info.php pour relier juste vacancy.php , le navigateur ne le trouvera pas - il va chercher l'adresse http://www.site.ru/about/vacancy.php , la construction des ajouts chemin à partir du répertoire courant.
Par conséquent , il est nécessaire d'écrire le chemin d' accès complet à partir de la racine du site - /job/vacancy.php
Tout cela vaut, bien sûr, non seulement la balise <a> et <img> et toute autre qui utilise des liens vers d' autres fichiers.

Liens vers les adresses locales doivent être écrites sans le protocole et domaine - seul le chemin de la racine du site - /job/vacancy.php . Liens vers d' autres sites doivent également être écrits en entier - http://www.site1.ru/job/vacancy.php .


PHP fournit un ensemble d'outils pour travailler avec des fichiers, des répertoires et URL-s.

Tout d' abord, ce sont les nombreuses variables prédéfinies, qui sont décrits dans la documentation et les valeurs dans votre script regardé pmozhno utilisant phpinfo() :

__FILE__ Constant contient le nom de l'exécutable en cours.
Contrairement à PHP_SELF il contient le nom du fichier ispolyayuschegosya actuellement.
conception très utile semble dirname ( __FILE__ ) dirname ( __FILE__ ) Sur lequel il est souhaitable de remplacer tous les fichiers défis qui dans le même répertoire que le script d'appel. Par exemple:
require dirname ( __FILE__ ). "/init.php" fonction dirname() , avec un basename() est l' un des plus commun à travailler avec des fichiers et des répertoires.

par phpfaq.ru