Suhtelised teed PHP-s
Nagu te juba teate, tuleb funktsiooni file_get_contents
parameetris kirjutada faili nimi. See aga töötab
ainult juhul, kui loetav fail asub
samas kaustas, kus meie skript käivitatakse.
Kui fail asub muus kohas, tuleb funktsiooni parameetris kirjutada tee selleni failini.
Vaatame näidet.
Näide
Oletame, et meil on järgmine failide struktuur:
- index.php
- /directory/
- test.txt
Loeme teksti faili sisu. Selleks peame lisaks faili nimele määrama ka kausta, kus see asub:
<?php
echo file_get_contents('directory/test.txt');
?>
Näide
Oletame, et meil on järgmine failide struktuur:
- /script/
- index.php
- test.txt
Sellisel juhul lõppeb meie faili lugemise katse, andes tee parameetrina selle nime, veaga:
<?php
echo file_get_contents('test.txt'); // annab vea
?>
Miks tekib viga? Asi on selles, et me kirjutasime funktsiooni parameetris faili nime. See tähendab, et loetav fail peaks asuma samas kaustas, kus käivitatav.
Kuid meie loetav fail asub taseme võrra kõrgemal, st kaustas, mis sisaldab skripti kausta.
Sellisel juhul peame tees failini
selgelt määrama, et seda faili tuleks otsida taseme võrra
kõrgemalt. Selleks tuleb faili nime ees
kirjutada ../. Teeme seda:
<?php
echo file_get_contents('../test.txt'); // fail loetakse
?>
Näide
Oletame, et meil on järgmine failide struktuur:
- /script/
- index.php
- /directory/
- test.txt
Sellisel juhul faili lugemisel me kõigepealt lähme taseme võrra kõrgemale ja seejärel määrame tee meie failini suhteliselt sellele tasemele:
<?php
echo file_get_contents('../directory/test.txt');
?>
Näide
Oletame, et meil on järgmine failide struktuur:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Sellisel juhul peame minema kõrgemale kaks korda:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktilised ülesanded
Kirjutage kood, mis loeb teksti faili sisu:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Kirjutage kood, mis loeb teksti faili sisu:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Kirjutage kood, mis loeb teksti faili sisu:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Kirjutage kood, mis loeb teksti faili sisu:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/