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 :

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 :

index.php<?php
  echo file_get_contents('directory/test.txt');
?>

Exemple

Supposons que nous ayons la structure de fichiers suivante :

Dans ce cas, la tentative de lecture de notre fichier en spécifiant son nom comme chemin se soldera par une erreur :

script/index.php<?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<?php
  echo file_get_contents('../test.txt'); // le fichier sera lu
?>

Exemple

Supposons que nous ayons la structure de fichiers suivante :

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 :

script/index.php<?php
  echo file_get_contents('../directory/test.txt');
?>

Exemple

Supposons que nous ayons la structure de fichiers suivante :

Dans ce cas, nous aurons besoin de remonter deux fois :

script/test/index.php<?php
  echo file_get_contents('../../directory/test.txt');
?>

Tâches pratiques

Задание 1

Écrivez un code qui lira le contenu du fichier texte :

  • index.php
  • /dir1//dir2/test.txt
Задание 2

Écrivez un code qui lira le contenu du fichier texte :

  • /script/index.php
  • /dir1//dir2/test.txt
Задание 3

Écrivez un code qui lira le contenu du fichier texte :

  • /script1//script2/index.php
  • /dir/test.txt
Задание 4

Écrivez un code qui lira le contenu du fichier texte :

  • /script1//script2//script3/index.php
  • /dir1//dir2//dir3/test.txt