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