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:
- index.php
- /directory/test.txt
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:
- /script/index.php
- test.txt
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:
- /script/index.php
- /directory/test.txt
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:
- /script//test/index.php
- /directory/test.txt
V tem primeru bomo morali iti navzgor dvakrat:
script/test/index.php<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktične naloge
Napišite kodo, ki bo prebrala vsebino besedilne datoteke:
- index.php
- /dir1//dir2/test.txt
Napišite kodo, ki bo prebrala vsebino besedilne datoteke:
- /script/index.php
- /dir1//dir2/test.txt
Napišite kodo, ki bo prebrala vsebino besedilne datoteke:
- /script1//script2/index.php
- /dir/test.txt
Napišite kodo, ki bo prebrala vsebino besedilne datoteke:
- /script1//script2//script3/index.php
- /dir1//dir2//dir3/test.txt