Relativne poti v PHP

Kot že veste, je v parameter funkcije file_get_contents treba napisati ime datoteke. Vendar to deluje le, če se datoteka, ki jo beremo, nahaja v isti mapi, kjer se zažene naš skript.

Če pa se datoteka nahaja drugje, potem je v parameter funkcije treba napisati pot do te datoteke.

Poglejmo si primer.

Primer

Recimo, da imamo naslednjo strukturo datotek:

Preberimo vsebino besedilne datoteke. Za to bomo poleg imena datoteke potrebovali navedbo tudi mape, v kateri se nahaja:

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

Primer

Recimo, da imamo naslednjo strukturo datotek:

V tem primeru bo poskus branja naše datoteke z navedbo le njenega imena kot poti, končal z napako:

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

Zakaj pride do napake? Bistvo je v tem, da smo v parameter funkcije napisali ime datoteke. To pomeni, da se mora datoteka, ki jo beremo, nahajati v isti mapi, kot se zažene skript.

Vendar se naša datoteka, ki jo beremo, nahaja en nivo višje, torej v mapi, ki vsebuje mapo s skriptom.

V tem primeru moramo v poti do datoteke eksplicitno navesti, da je to datoteko treba iskati en nivo višje. Za to je treba pred imenom datoteke napisati ../. Naredimo to:

php<?php
  echo file_get_contents('../test.txt'); // datoteka bo prebrana
?>

Primer

Recimo, da imamo naslednjo strukturo datotek:

V tem primeru bomo pri branju datoteke najprej šli en nivo višje, nato pa navedli pot do naše datoteke relativno glede na ta nivo:

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

Primer

Recimo, da imamo naslednjo strukturo datotek:

V tem primeru bomo morali iti navzgor dvakrat:

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

Praktične naloge

Задание 1

Napišite kodo, ki bo prebrala vsebino besedilne datoteke:

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

Napišite kodo, ki bo prebrala vsebino besedilne datoteke:

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

Napišite kodo, ki bo prebrala vsebino besedilne datoteke:

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

Napišite kodo, ki bo prebrala vsebino besedilne datoteke:

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