Релативне путање у 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