Относителни пътища в PHP

Както вече знаете, в параметъра на функцията file_get_contents трябва да се пише името на файла. Това обаче работи само в случай, че файлът за четене се намира в същата папка, в която се стартива нашият скрипт.

Ако файлът се намира на друго място, тогава в параметъра на функцията трябва да се напише пътят до този файл.

Нека разгледаме пример.

Пример

Да предположим, че имаме следната структура на файловете:

Нека прочетем съдържанието на текстовия файл. За това освен името на файла ще ни трябва да посочим и папката, в която се намира:

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

Пример

Да предположим, че имаме следната структура на файловете:

В този случай опитът да прочетем нашия файл, като посочим в пътя само неговото име, ще завърши с грешка:

script/index.php<?php
  echo file_get_contents('test.txt'); // ще даде грешка
?>

Защо се получава грешка? Работата е там, че в параметъра на функцията сме написали името на файла. Това означава, че файлът за четене трябва да се намира в същата папка, в която се стартира изпълнимият файл.

Нашият файл за четене обаче се намира с едно ниво по-нагоре, тоест в папката, която съдържа папката със скрипта.

В този случай трябва изрично да посочим в пътя до файла, че този файл трябва да се търси с едно ниво по-нагоре. За това преди името на файла трябва да се напише ../. Нека направим това:

php<?php
  echo file_get_contents('../test.txt'); // файлът ще бъде прочетен
?>

Пример

Да предположим, че имаме следната структура на файловете:

В този случай при четене на файла първо излизаме с едно ниво нагоре, а след това посочваме пътя до нашия файл спрямо това ниво:

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

Пример

Да предположим, че имаме следната структура на файловете:

В този случай ще се наложи да излезем нагоре два пъти:

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

Практически задачи

Задание 1

Напишете код, който ще прочете съдържанието на текстовия файл:

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

Напишете код, който ще прочете съдържанието на текстовия файл:

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

Напишете код, който ще прочете съдържанието на текстовия файл:

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

Напишете код, който ще прочете съдържанието на текстовия файл:

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