Nom de chemin absolu et relatif. Description des chemins : absolu, relatif, UNC et URL

Il est facile d'accéder à un fichier qui se trouve dans le même dossier que notre script. Mais lorsqu'il s'agit de travailler avec des fichiers dans différents dossiers, les débutants commencent à devenir fous.

De cet article, nous apprendrons :

  • - qu'est-ce qu'un chemin absolu et relatif vers un fichier,
  • - en quoi diffèrent-ils pour le serveur et le navigateur,
  • - quelles erreurs font les débutants lors de la création de chemins de fichiers et comment les éviter.

Chemins d'accès aux fichiers sur le serveur

Le chemin absolu du serveur est le chemin complet depuis la racine jusqu'au script. Vous pouvez connaître le chemin complet du script en utilisant la constante « magique » __FILE__ :

Selon le système d'exploitation, le résultat peut varier :

D:\OpenServer\domains\site\index.php- pour OpenServer sous Windows

/var/www/site/index.php - pour UNIX

Bien entendu, la fonction include() et ses analogues peuvent inclure un fichier par son chemin absolu :

Le chemin relatif du serveur est le chemin du dossier dans lequel se trouve le script actuel. Imaginons qu'il y ait 2 scripts sur notre site Web : index.php et config.php. Ensuite, vous pouvez connecter le deuxième à partir du premier en utilisant des chemins absolus et relatifs :

Jusqu'à présent, tout est simple. Mais si nous décidons d’inclure un fichier qui inclut lui-même un autre fichier, la situation devient un peu plus compliquée. Imaginons que nous ayons un dossier scripts avec les scripts script1.php et script2.php , la structure pour plus de clarté :

Index.php scripts script1.php script2.php

Le contenu des fichiers ressemblera à ceci :

Lancez le fichier index.php dans votre navigateur. Si tout est fait correctement, le message s'affichera Connexion réussie. Essayez maintenant de déplacer le fichier script2.php à la racine du site, au même niveau que index.php .

Rien n'a changé, le site affiche toujours Connexion réussie. Comment est-ce arrivé ? Le fait est que PHP essaie de trouver le fichier à la fois dans le dossier de connexion et dans le dossier du script connecté. Comme vous le comprenez, si vous avez deux fichiers dans des dossiers différents, vous pouvez accidentellement connecter le mauvais script et casser le site.

Navigation utilisant des chemins relatifs.

Notez que les chemins relatifs ne commencent jamais par une barre oblique / . S'il y a une barre oblique, PHP considérera le chemin comme absolu.

dossier1/dossier2/dossier3/script1.php- rechercher un fichier dans un sous-dossier

../index.php - remonter d'un dossier

../../../index.php - remonter de 3 dossiers

Comment spécifier le chemin d'accès à un fichier sur le serveur ?

Oubliez les chemins relatifs. Fournissez toujours uniquement des chemins de fichiers absolus. Radical, non ? Ne vous inquiétez pas, la communauté PHP a mis au point 2 façons simples (il y en a aussi des difficiles :)) de spécifier le chemin complet... sans spécifier le chemin complet.

La première consiste à utiliser la fonction dirname(). Il prend un chemin vers un fichier et renvoie le chemin sans le nom du fichier, c'est-à-dire le dossier dans lequel se trouve le fichier. En combinant __FILE__ et dirname() nous pouvons obtenir le dossier de script actuel :

Nous savons maintenant avec certitude que le fichier script2.php sera inclus, situé dans le même dossier que le script actuel.

La deuxième façon consiste à utiliser des constantes. Il est utilisé dans de nombreux CMS populaires et ressemble à ceci :

Une constante est créée DIR_ROOT, dans laquelle nous stockerons le chemin complet du dossier racine du site. Vous pouvez également éventuellement créer plusieurs constantes avec des liens vers des dossiers fréquemment utilisés. Dans include(), nous passons une constante et le chemin d'accès au fichier souhaité est ajouté par rapport à celui-ci.

Chemins d'accès aux fichiers dans le navigateur

Le navigateur n'a pas accès au disque dur de votre serveur. Sa « portée » part du dossier racine du site. Par conséquent, les chemins absolus et relatifs du serveur et du navigateur sont complètement différents.

Le chemin absolu d'un fichier dans le navigateur commence par une barre oblique /, par exemple /images/logo.jpg. Ce chemin signifie que le fichier se trouve sur site.ru/images/logo.jpg.

Le chemin relatif vers le fichier est exactement le même, mais sans la barre oblique, par exemple images/logo.jpg.

Une erreur courante que font les débutants est d’utiliser un chemin relatif au lieu d’un chemin absolu. Imaginons que le logo du site se trouve sur site.ru/images/logo.jpg. Essayons de le connecter via un chemin relatif :

Tout semble bien et fonctionne. Mais cela se produira jusqu'à ce que l'utilisateur accède à un dossier, par exemple site.ru/products/15/. Comme vous pouvez le deviner, le navigateur tentera de charger le logo à site.ru/products/15/images/logo.jpg.

Utilisez toujours des chemins de fichiers absolus. De cette façon, vous éviterez la plupart des problèmes de navigation possibles.

L'article contient des morceaux de code. La version complète peut être téléchargée ici - https://bitbucket.org/okiseleva/html-and-css-learn/src. Dossiers - « absolute_path_lvl_1 » et tous les sous-dossiers.

Le chemin peut être absolu ou relatif.

Chemin absolu

Un chemin absolu est le chemin allant du dossier racine au fichier.

Le chemin comprend tous les dossiers que nous devons consulter, séparés par une barre oblique. Regardons un exemple :

/absolute_path_lvl_1/level_2.1/level_3.1/Kevin.png

Chemin absolu vers le fichier

Chemin relatif

Un chemin relatif est un lien qui pointe vers d'autres pages de votre site par rapport à la page Web sur laquelle le lien existe déjà.

Si nous descendons les dossiers, nous les séparons également par « / ». Si vous devez monter d’un niveau, écrivez « .. »

1. L’exemple le plus simple de chemin relatif est simplement un nom de fichier. si le fichier est à proximité, indiquez simplement son nom

Bonjour.png

Chemin relatif, fichier à proximité


2. Remontez d'un dossier

../Kevin_lvl_2.png

Chemin relatif 2

3. Un exemple plus compliqué, de Diff_paths.htmlà la photo avec Kevin

../level_2.1/level_3.1/Kevin.png

Chemin relatif 3


Quelle est la différence entre les chemins absolus et relatifs ?

C'est très simple. Si le chemin est spécifié à partir de la racine du système, il s'agit alors d'un chemin absolu. C'est comme une adresse postale dans la vraie vie : peu importe où vous allez, mais avec l'adresse exacte, vous trouverez toujours le bon endroit.

Si la racine n'est pas spécifiée au début du chemin, alors ce chemin sera relatif et il sera construit à partir de la position actuelle. Dans la vraie vie, c'est comme la route qui mène au magasin d'alcool : « deux pâtés de maisons à gauche et tout droit tout le temps ». Ce chemin n'est accessible qu'à partir d'un point précis. De l’autre, vous vous retrouverez dans un endroit complètement différent.

Dans le dossier Absolute_path_lvl_1/level_2.2/Diff_paths.html Vous pouvez voir un exemple de page HTML avec différents chemins de fichiers.

Voici un exemple de chemin absolu et relatif pour le même fichier avec Kevin.


D:/hgprojects → J'ai téléchargé le projet « html-and-css-learn » ici. Tu as peut-être un autre moyen


PS - plus de détails dans le livre "

Comme vous le savez, dans le paramètre href de la balise (), vous devez spécifier le chemin d'accès au fichier référencé.
Beaucoup de gens écrivent quelque chose comme http://somesite.ru/catalog/doc.html. Oui, personne ne conteste, ça marche. Mais il y a un « mais ». Regardons un exemple.

Laissez votre site être hébergé, par exemple, sur un hébergement gratuit et son adresse était la suivante : http://fsite.freehosting.ru.
Il y a environ 100 documents sur le serveur. Et vous décidez donc de déplacer votre site Web vers un autre domaine,
que ce soit un hébergement payant dans la zone ru : http://site.ru. Eh bien, devrions-nous maintenant remplacer http://fsite.freehosting.ru par http://site.ru partout ?
Oui, grâce à des éditeurs comme homesite, c'est possible. Mais ce n'est pas une solution.
Supposons qu'avant de télécharger une page sur le serveur, vous vérifiiez sa fonctionnalité
sur votre serveur Apache domestique (pour ceux qui ne savent pas encore ce qu'est un « serveur domestique », allez ici (Installer et configurer un serveur Apache), et à la place de http://localhost vous devrez écrire http:// site.ru partout. D'accord avec cela, au moins c'est gênant.

La solution est, lors de la spécification du chemin d'accès à un fichier, de prendre en compte non pas sa position sur le site, mais sa position sur le serveur.

Chemin absolu

Prenons, par exemple, le fichier doc.html, qui se trouve à l'adresse : http://somesite.ru/catalog/doc.html. Comme vous le savez, il existe un dossier www sur le serveur. Comme nous pouvons le voir d'après l'adresse, ce dossier contient le dossier catalogue, et il contient déjà le fichier doc.html.

Si, lors de la spécification du chemin d'accès à un fichier, vous mettez / avant l'adresse, alors cela ressemblera à ce qui suit : root_directory_in_the_north/www/path to the file.
Autrement dit, http://somesite.ru/catalog/doc.html est similaire à ce qui suit : /catalog/doc.html.
Ainsi, lorsqu’il y a un / devant l’adresse, cela signifie que le « compte à rebours » démarre depuis l’annuaire www.
Désormais, au lieu de http://localhost/index.html, vous pouvez écrire /index.html à partir de n'importe quel document.
Mais pour accéder au répertoire cgi, vous devez écrire ceci : /cgi-bin/path du fichier.

Les chemins créés à l'aide des méthodes décrites ci-dessus sont appelés absolus, car le chemin absolu (complet) du fichier sur le serveur est indiqué.

Chemin relatif

Il existe également des chemins relatifs, qui sont spécifiés par rapport au document lui-même d'où provient le lien.
Par exemple, si vous créez un lien dans doc.html newcat/new.html, cela implique que le fichier new.html se trouve dans le répertoire newcat, qui, à son tour, se trouve dans le même répertoire que le fichier doc.html. Comme vous pouvez le constater, ce chemin est relatif au fichier doc.html. Où que se trouve ce fichier, le chemin newcat/new.html sera toujours valide si le fichier doc.html et le répertoire newcat sont au même niveau (c'est-à-dire dans le même répertoire).

Vous pouvez également remonter d'un répertoire par rapport à un document. Pour ce faire, vous devez écrire ../.
Par exemple, il existe un grand répertoire, il contient deux répertoires : primaire et secondaire. Le répertoire principal contient le fichier doc.html déjà familier ; et dans le répertoire secondaire il y a un fichier new.html. Afin de créer un lien du fichier doc.html vers le fichier new.html, vous devez écrire ../secondary/new.html. Mais si le grand répertoire se trouve dans le répertoire www, alors le chemin d'accès au fichier new.html pourrait être spécifié comme ceci : /big/secondary/new.html

Au lieu de conclure, il convient de dire que l'utilisation de chemins absolus et relatifs facilite grandement le travail des webmasters, qu'ils soient débutants ou professionnels. Profitez donc de cette opportunité, comme on dit, au maximum et essayez d'éviter les chemins comme http://site.ru/catalog/file.file, ou au moins de recourir à leur aide aussi rarement que possible.


votre site existe en deux dimensions, pour ainsi dire.
Réel et virtuel.

Pour tous les visiteurs, il s'agit d'un serveur Web virtuel. Ce qui diffère, entre autres, en ce qu'AUCUN FICHIERS N'EXISTE dessus. si tu écris %20" target="_blank">http://site.ru/file.html- ce n'est pas un fichier. Il s'agit d'un URI, d'une adresse virtuelle. Il se peut qu'il n'y ait aucun fichier nommé file.html sur le serveur. Ce sont toutes des adresses virtuelles, pas des fichiers.
Et le navigateur fonctionne spécifiquement avec des adresses.

Pour un développeur, un site Web est un programme exécuté sur un ordinateur réel très spécifique. Avec un disque dur, des répertoires et des fichiers bien spécifiques. Et le script, travaillant avec ses données, chargeant d'autres scripts, fonctionne avec de vrais FICHIERS, sur le DISQUE physique.

C’est dans cette différence que résident les difficultés que rencontrent souvent les débutants.
Ils perdent des fichiers, confondent les liens avec les fichiers, accèdent aux fichiers locaux via HTTP ou incluent des fichiers depuis la racine du serveur Web.

Mais il vous suffit de bien comprendre deux choses :
1. Faites la distinction entre la racine du serveur Web, telle que vue par le navigateur, et la racine du système de fichiers sur le disque.
2. Différence entre les chemins relatifs et les chemins absolus.

Commençons par le deuxième.
C'est très simple. Si le chemin est spécifié à partir de la racine du système, il s'agit alors d'un chemin absolu. C'est comme une adresse postale dans la vraie vie : peu importe où vous allez, mais avec l'adresse exacte, vous trouverez toujours le bon endroit.
exemples de chemins absolus :
/var/www/site/forum/index.php
/img/frame.gif
depuis :\windows\command.com

Dans les systèmes Unix et sur les sites Web, la racine est indiquée par une barre oblique - "/".
C'est important. Ce n'est pas seulement un bâton, mais une ADRESSE indépendante, un chemin.
Dans l'adresse %20" target="_blank">http://www.site.ru/ le dernier coup n'est pas pour la beauté ! Il désigne une adresse très précise – le début du site.
Sur un disque dans les systèmes Unix, vous pouvez également taper « cd / » et vous serez redirigé vers le répertoire racine.
Dans les systèmes Windows, le système de fichiers est divisé en disques. L'adresse absolue doit donc indiquer le nom du disque. Il n'y a pas de racine absolue de l'ensemble du système de fichiers sous Windows ; chaque disque a la sienne. Par exemple, C:\E:\
par conséquent, même si le chemin dans Windows commence par une barre oblique, ce n'est pas un chemin absolu, mais relatif. Par rapport au disque actuel. Et l'absolu commence par une lettre.

Si la racine n'est pas spécifiée au début du chemin, alors ce chemin sera relatif et il est dérivé de la position actuelle. Dans la vraie vie, c'est comme la route qui mène au magasin d'alcool : « deux pâtés de maisons à gauche et tout droit tout le temps ». Ce chemin n'est accessible qu'à partir d'un point précis. De l’autre, vous vous retrouverez dans un endroit complètement différent.
L'exemple le plus simple de chemin relatif est simplement un nom de fichier.
Si le fichier se trouve dans le même répertoire que celui avec lequel le programme travaille, il le trouvera en ajoutant le chemin actuel au nom du fichier.
exemples de chemins relatifs :
file.php (le fichier est dans le même dossier)
./file.php (le fichier se trouve dans le même dossier. Une telle entrée est parfois requise sur certains systèmes Unix)
images/picture.jpg (le fichier se trouve dans le dossier images, qui se trouve dans celui actuel)
../file.php (le fichier se trouve dans un dossier situé un niveau plus haut que celui actuel)
../../file.php (le fichier se trouve dans un dossier situé deux niveaux plus haut que celui actuel)

Le système d'exploitation et le navigateur, lorsqu'ils rencontrent un chemin relatif, le transforment en chemin absolu. mais chacun à sa manière.

Passons maintenant au premier point.
La différence entre la racine du serveur Web, vue par le navigateur, et la racine du système de fichiers sur le disque.
De manière générale, tout devrait ressortir clairement des explications précédentes.
Sur le disque, le chemin d'accès au fichier script peut ressembler à ceci :
/var/www/site/forum/index.php
Dans le même temps, l'adresse virtuelle de ce script lorsqu'il est visualisé via un navigateur sera :
%20" target="_blank">http://www.site.ru/forum/index.php
Dans cet exemple, il est facile de voir où se croisent les deux dimensions : les deux adresses ont une partie commune - /forum/index.php - et c'est la raison de la confusion.
Pour le navigateur, c’est le chemin le plus complet possible. Cela commence à la racine du site.
Pour un script exécuté sur le serveur, il ne s'agit que d'une PARTIE du chemin.
pour le script, le chemin /forum/index.php sera inexistant - il n'y a pas de répertoire forum à la racine du disque !
pour obtenir le chemin complet de ce qui ressemble à /forum/index.php sur le site, vous devez ajouter à gauche le chemin d'accès au dossier qui est considéré comme la racine de l'ensemble du serveur Web.
dans notre exemple c'est
/var/www/site
Ce chemin est défini dans la configuration du serveur Web et est contenu dans la variable système PHP $_SERVEUR["DOCUMENT_ROOT"]

Dans un serveur virtuel - celui que voit l'utilisateur - au contraire, il n'y a pas de disque. Il existe une racine du site. Autrement dit, pour qu'un lien soit garanti de fonctionner, quel que soit l'endroit du site à partir duquel il est appelé, il doit être absolu.
Si vous avez, disons, deux sections sur votre site Web :
%20" target="_blank">http://www.site.ru/about/info.php
Et
%20" target="_blank">http://www.site.ru/job/vacancy.php
ensuite, si vous créez un lien dans le fichier info.php simplement vers vacancy.php , le navigateur ne le trouvera pas - il cherchera l'adresse %20," target="_blank">http://www.site.ru/about/vacancy.php, complétant le chemin du répertoire actuel.
Par conséquent, vous devez écrire le chemin complet à partir de la racine du site - /job/vacancy.php
Bien entendu, tout cela ne s'applique pas seulement aux balises
mais aussi et tous les autres où des liens vers d'autres fichiers sont utilisés.

Les liens vers des adresses locales doivent être écrits sans spécifier le protocole et le domaine - uniquement le chemin depuis la racine du site - /job/vacancy.php. Les liens vers d'autres sites doivent être rédigés dans leur intégralité - %20." target="_blank">http://www.site1.ru/job/vacancy.php .

PHP fournit de nombreux outils pour travailler avec des fichiers, des répertoires et des URL.

La constante __FILE__ contient le nom du fichier exécutable actuel.
Contrairement à PHP_SELF, il contient le nom du fichier en cours d'exécution.
le design semble très utile répertoire(__FILE__), par lequel il est souhaitable de remplacer tous les appels aux fichiers situés dans le même répertoire que le script appelant. Par exemple:
nécessite un nom de répertoire (__FILE__). "/init.php"
La fonction dirname(), avec basename(), est l'une des fonctions les plus couramment utilisées pour travailler avec des fichiers et des répertoires.

Note:
Si vous rencontrez des problèmes avec les chemins lors du transfert de scripts de Windows vers un système Unix, faites tout d'abord attention à la casse des lettres. Sur les serveurs Unix, la casse des lettres dans le nom de fichier est importante ; File.txt et file.txt sont deux fichiers différents, mais sous Windows, ce sont les mêmes. Il est préférable de toujours écrire le nom du fichier exactement, en respectant la casse.

Chemins absolus


Dans ce cas, tout est très simple, on indique le chemin direct vers un fichier situé sur un autre domaine. Il est possible de spécifier un chemin raccourci en utilisant deux barres obliques au début sans spécifier explicitement http ou https, et le serveur lui-même remplacera le protocole (extension) requis en fonction des paramètres du serveur. Il est important de noter que cette vue est nécessaire pour naviguer entre les sites :
http://google.com

Par rapport à la racine du site


Dans ce cas, le navigateur prend le domaine du site Web et y substitue le lien spécifié. Dans ce cas, ça fonctionnera http://site/css/style.css. Dans le cas de http, il n'y a pas lieu de s'inquiéter du https, puisqu'il sera pris sous la forme dans laquelle la page est actuellement ouverte, c'est-à-dire qu'avec http ce sera http. C’est également très pratique pour transférer certaines fonctionnalités entre différents sites ou transférer un site d’un domaine à un autre sans toucher au code. Un moyen prioritaire de spécifier les chemins d’accès aux pages et aux fichiers.

Concernant cette page


Une méthode moins populaire, car elle prend la page actuelle et ajoute une nouvelle adresse à son chemin ..com/trick/css/style.css . Presque impossible à utiliser dans les cas où nous utilisons la CNC.

Utiliser la balise de base


Dans ce cas, au lieu de la substitution de domaine standard, le chemin depuis la base sera remplacé par le chemin relatif. C'est-à-dire que nous recevrons un fichier situé :
http://site/tricks/css/style.css

Chemins relatifs et absolus en PHP

Tout est très simple, lorsque nous travaillons dans le système de fichiers, nous respecterons les règles de travail avec les chemins en PHP. Si nous transmettons la commande au navigateur client, alors les chemins HTML sont utilisés. Autrement dit, dans l'exemple suivant, nous transmettons depuis PHP le chemin vers le navigateur avec la page à laquelle il doit accéder. Le fait que le navigateur ait effectué la transition entre les pages est visible dans la barre d'adresse :
header("Emplacement : /page2.php");
Ainsi, nous ouvrons la page page1.php, et page2.php est écrit dans la barre d'adresse, et le fait est que le navigateur a D'ABORD chargé la page page1.php, puis a reçu des informations avec redirection et a CHARGÉ la deuxième page page2. php. Dans ce cas, la redirection s'est faite côté client (navigateur), ce qui signifie que nous utilisons les règles liées au HTML (adresse web).

Chemin absolu en PHP

Un chemin absolu en PHP est traité comme un chemin absolu depuis le répertoire dans lequel le serveur Web est installé. Ce chemin peut être obtenu à partir de :
$_SERVEUR["DOCUMENT_ROOT"]
Si l'on prend ce serveur comme exemple, son chemin est : /home/school/public_html/schoolphp, ce qui signifie que pour spécifier le chemin complet vers la photo « /photo/img1.jpg », vous devez préciser ce qui suit chemin:
getimagesize("/home/school/public_html/schoolphp/photo/img1.jpg"); getimagesize($_SERVER["DOCUMENT_ROOT"]."/photo/img1.jpg");
Je tiens à préciser que le site peut se trouver dans un sous-répertoire, c'est-à-dire pour :
http://site/forum/
Il peut être extrêmement difficile d'utiliser DOCUMENT_ROOT, car le forum (en tant que script externe) ne sait pas encore où il se trouvera sur le site. Il existe plusieurs façons de résoudre ce problème, énumérons-en quelques-unes :

1) Créez une page en tant que sous-domaine.

2) Ecrivez le chemin absolu dans la config dans config.php, soit :
Core::$ROOT = $_SERVER["DOCUMENT_ROOT"]; getimagesize(Core::$ROOT."/photo/img1.jpg"); // utilise un chemin absolu modifiable
Vous pouvez désormais lier l'intégralité de votre site à Core :: $ ROOT sans aucun remords, et si vous devez accidentellement modifier le chemin d'accès au fichier inclus, vous pouvez remplacer la valeur de Core :: $ ROOT ;

Par rapport au fichier de démarrage (base)

Dans de nombreux systèmes index.php, il existe un seul point d'entrée, c'est-à-dire que index.php s'ouvre et que d'autres fichiers y sont connectés.
inclure "./modules/allpages.php" ;
Dans ce cas, allpages.php sera connecté le long du chemin : /home/school/public_html/schoolphp/modules/allpages.php. Cette méthode est pratique car si vous écrivez include dans le fichier allpages.php : include "./modules/module/page.php";, alors il sera toujours recherché par rapport au point d'entrée, à savoir index.php :
/home/school/public_html/schoolphp/modules/module/page.php
Il s'agit d'une implémentation assez pratique étant donné que nous connaissons clairement la structure de notre application par rapport à la racine index.php. Même si nous appelons un autre fichier que index.php, les chemins fonctionneront exactement de la même manière. Nous avons appelé dir.php , ce qui signifie que les chemins seront pris relatifs au fichier dir.php !

Que devez-vous savoir d’autre ?

Je n'ai pas pu m'empêcher de rappeler à ceux qui ont oublié ou de suggérer à ceux qui ne savent pas qu'on peut remonter non seulement profondément dans les répertoires, mais aussi vers le haut (dossiers en arrière), et leur syntaxe est assez simple :
inclure "../file.php" ;
Dans ce cas, le répertoire de ce fichier ou la racine index.php sera récupéré et renvoyé 1 dossier, où le fichier « file.php » sera recherché.

DOCUMENT_ROOT n'est pas la seule option pour obtenir le chemin racine du site. Jetons un coup d'œil au manuel : "Le répertoire racine du document dans lequel le script actuel est exécuté est exactement celui spécifié dans le fichier de configuration du serveur." . Cela signifie que si le chemin est mal écrit dans le fichier de configuration, l'ensemble du site ne fonctionnera pas. Ce qu'il faut faire? Vous pouvez écrire aux administrateurs et propriétaires de l'hébergement qui héberge le serveur dans l'espoir qu'ils corrigeront leurs défauts. Ou recherchez une alternative stable, qui est __DIR__ , il s'agit du chemin absolu vers le fichier donné dans lequel le code est exécuté. Disons que nous avons un fichier de configuration dans le dossier de configuration, et pour qu'en utilisant __DIR__ nous n'ayons pas à remonter d'un dossier vers le haut à chaque fois en écrivant __DIR__"/../" nous pouvons écrire en toute sécurité __DIR__ dans notre variable, dans l'exemple ci-dessous je l'ai écrit dans une propriété de classe (leçon n°24, qui n'a pas compris, utilise une variable régulière) :
Noyau ::$ROOT = __DIR__; // Ou pour l'ancien PHP - dirname(__FILE__);
Je voulais aussi vous rappeler quelque chose d’intéressant et d’important. Pour des raisons de sécurité, le serveur Web interdit le déplacement dans les répertoires situés au-dessus de la racine du site. Autrement dit, le site se trouve au chemin suivant : /home/school/public_html/schoolphp, mais le contenu des dossiers /home ou /home/school ne sera pas disponible en lecture.

PHP peut-il utiliser des chemins HTML ? Oui, dans des fonctions spéciales, par exemple :
file_get_contets("http://site");

Pratique

Dans mes anciens projets, j'utilisais DOCUMENT_ROOT, maintenant je suis passé aux chemins relatifs index.php "./folder/file".

Zend2, un produit de développeurs PHP, l'un des FrameWork les plus complexes à l'heure actuelle, utilise également des chemins relatifs avec une syntaxe différente de la mienne, c'est-à-dire « dossier/fichier ».

Le forum IPB.3 utilise dirname(__FILE__).

Conclusions :

1) En HTML on utilise des chemins relatifs à la racine du site, à savoir « /file.php » (La ligne commence par sabrer).
2) en PHP on utilise par rapport au fichier racine "./file.php" (La ligne commence par point et barre oblique), une alternative serait d'utiliser une propriété initialisée à la racine : __DIR__;
3) La redirection d’en-tête utilise des chemins depuis HTML. PHP travaillant avec le système de fichiers (connexion de fichiers, sauvegarde et édition d'images) - avec chemins PHP.

Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :