Relativni putevi u PHP-u

Kao što već znate, u parametar funkcije file_get_contents treba napisati ime fajla. Ovo, međutim, funkcioniše samo u slučaju da se fajl koji čitamo nalazi u istoj fascikli u kojoj se pokreće naš skript.

Ako se fajl nalazi na drugom mestu, onda u parametar funkcije treba napisati putanju do tog fajla.

Pogledajmo na primeru.

Primer

Neka imamo sledeću strukturu fajlova:

Hajde da pročitamo sadržaj tekstualnog fajla. Za ovo pored imena fajla biće nam potrebno navediti i fasciklu u kojoj se nalazi:

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

Primer

Neka imamo sledeću strukturu fajlova:

U ovakvom slučaju pokušaj čitanja našeg fajla, navedenjem njegovog imena kao putanje, završiće se greškom:

script/index.php<?php
  echo file_get_contents('test.txt'); // izaći će greška
?>

Zašto se javlja greška? Stvar je u tome što smo u parametar funkcije napisali ime fajla. Ovo znači da se fajl koji se čita treba nalaziti u istoj fascikli u kojoj se pokreće izvršni.

Međutim, naš fajl koji se čita se nalazi jedan nivo iznad, odnosno u onoj fascikli koja sadrži fasciklu sa skriptom.

U takvom slučaju moramo eksplicitno naznačiti u putanji do fajla da ovaj fajl treba tražiti jedan nivo iznad. Za ovo treba ispred imena fajla napisati ../. Učinimo to:

php<?php
  echo file_get_contents('../test.txt'); // fajl će biti pročitan
?>

Primer

Neka imamo sledeću strukturu fajlova:

U ovom slučaju pri čitanju fajla prvo ćemo izaći jedan nivo iznad, a zatim ćemo naznačiti putanju do našeg fajla u odnosu na taj nivo:

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

Primer

Neka imamo sledeću strukturu fajlova:

U ovom slučaju će nam trebati da izađemo gore dva puta:

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

Praktični zadaci

Задание 1

Napišite kod koji će pročitati sadržaj tekstualnog fajla:

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

Napišite kod koji će pročitati sadržaj tekstualnog fajla:

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

Napišite kod koji će pročitati sadržaj tekstualnog fajla:

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

Napišite kod koji će pročitati sadržaj tekstualnog fajla:

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