Chemins relatifs en PHP
Comme vous le savez déjà, le paramètre de la fonction file_get_contents
doit contenir le nom du fichier. Cela, cependant, ne fonctionne
que si le fichier à lire se trouve
dans le même dossier que celui où notre script est exécuté.
Si le fichier se trouve ailleurs, alors le paramètre de la fonction doit contenir le chemin vers ce fichier.
Regardons un exemple.
Exemple
Supposons que nous ayons la structure de fichiers suivante :
- index.php
- /directory/
- test.txt
Lisons le contenu du fichier texte. Pour cela, en plus du nom du fichier, nous aurons besoin d'indiquer également le dossier dans lequel il se trouve :
<?php
echo file_get_contents('directory/test.txt');
?>
Exemple
Supposons que nous ayons la structure de fichiers suivante :
- /script/
- index.php
- test.txt
Dans ce cas, la tentative de lecture de notre fichier en spécifiant son nom comme chemin se soldera par une erreur :
<?php
echo file_get_contents('test.txt'); // générera une erreur
?>
Pourquoi une erreur est-elle générée ? Le fait est que nous avons écrit le nom du fichier dans le paramètre de la fonction. Cela signifie que le fichier à lire doit être situé dans le même dossier que celui de l'exécution.
Cependant, notre fichier à lire se trouve un niveau au-dessus, c'est-à-dire dans le dossier qui contient le dossier du script.
Dans ce cas, nous devons explicitement indiquer dans le chemin
du fichier qu'il faut rechercher ce fichier un niveau
au-dessus. Pour cela, avant le nom du fichier, il faut
écrire ../. Faisons cela :
<?php
echo file_get_contents('../test.txt'); // le fichier sera lu
?>
Exemple
Supposons que nous ayons la structure de fichiers suivante :
- /script/
- index.php
- /directory/
- test.txt
Dans ce cas, lors de la lecture du fichier, nous allons d'abord remonter d'un niveau, puis indiquer le chemin vers notre fichier par rapport à ce niveau :
<?php
echo file_get_contents('../directory/test.txt');
?>
Exemple
Supposons que nous ayons la structure de fichiers suivante :
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Dans ce cas, nous aurons besoin de remonter deux fois :
<?php
echo file_get_contents('../../directory/test.txt');
?>
Tâches pratiques
Écrivez un code qui lira le contenu du fichier texte :
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Écrivez un code qui lira le contenu du fichier texte :
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Écrivez un code qui lira le contenu du fichier texte :
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Écrivez un code qui lira le contenu du fichier texte :
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/