Santykiniai keliai PHP
Kaip jau žinote, į funkcijos file_get_contents
parametrą reikia rašyti failo pavadinimą. Tai, tačiau, veikia
tik tuo atveju, jei skaitomas failas yra
tame pačiame kataloge, kuriame paleidžiamas mūsų scenarijus.
Jei failas yra kitoje vietoje, tada į funkcijos parametrą reikia rašyti kelią iki to failo.
Pažiūrėkime pavyzdžiu.
Pavyzdys
Tarkime, kad turime tokią failų struktūrą:
- index.php
- /directory/
- test.txt
Perskaitykime teksto failo turinį. Tam, be failo pavadinimo, mums reikės nurodyti ir katalogą, kuriame jis yra:
<?php
echo file_get_contents('directory/test.txt');
?>
Pavyzdys
Tarkime, kad turime tokią failų struktūrą:
- /script/
- index.php
- test.txt
Tokiu atveju bandymas perskaityti mūsų failą, nurodant jo pavadinimą kaip kelią, baigsis klaida:
<?php
echo file_get_contents('test.txt'); // išmes klaidą
?>
Kodėl išmetama klaida? Esmė ta, kad mes į funkcijos parametrą parašėme failo pavadinimą. Tai reiškia, kad skaitomas failas turi būti tame pačiame kataloge, kuriame yra paleidžiamasis.
Tačiau, mūsų skaitomas failas yra vienu lygiu aukščiau, tai yra, tame kataloge, kuriame yra katalogas su scenarijumi.
Tokiu atveju mes turime aiškiai nurodyty kelį
iki failo, kad šis failas būtų ieškomas vienu lygiu
aukščiau. Tam prieš failo pavadinimą reikia
parašyti ../. Padarykime tai:
<?php
echo file_get_contents('../test.txt'); // failas bus perskaitytas
?>
Pavyzdys
Tarkime, kad turime tokią failų struktūrą:
- /script/
- index.php
- /directory/
- test.txt
Šiuo atveju skaitant failą mes pirmiausia išeisime vienu lygiu aukščiau, o tada nurodysime kelią iki mūsų failo, santykinai to lygio:
<?php
echo file_get_contents('../directory/test.txt');
?>
Pavyzdys
Tarkime, kad turime tokią failų struktūrą:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Šiuo atveju mums reikės išeiti aukštyn du kartus:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktinės užduotys
Parašykite kodą, kuris perskaitys teksto failo turinį:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Parašykite kodą, kuris perskaitys teksto failo turinį:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Parašykite kodą, kuris perskaitys teksto failo turinį:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Parašykite kodą, kuris perskaitys teksto failo turinį:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/