Relatívne cesty v PHP
Ako už viete, do parametra funkcie file_get_contents
sa má písať názov súboru. To však funguje
len v prípade, že čítaný súbor sa nachádza
v rovnakom priečinku, v ktorom sa spúšťa náš skript.
Ak sa súbor nachádza na inom mieste, tak do parametra funkcie je potrebné napísať cestu k tomuto súboru.
Pozrime sa na príklad.
Príklad
Predpokladajme, že máme nasledujúcu štruktúru súborov:
- index.php
- /directory/
- test.txt
Poďme si prečítať obsah textového súboru. Na to okrem názvu súboru budeme potrebovať uviesť aj priečinok, v ktorom sa nachádza:
<?php
echo file_get_contents('directory/test.txt');
?>
Príklad
Predpokladajme, že máme nasledujúcu štruktúru súborov:
- /script/
- index.php
- test.txt
V takom prípade pokus o prečítanie nášho súboru zadaním jeho názvu ako cesty skončí chybou:
<?php
echo file_get_contents('test.txt'); // vypíše chybu
?>
Prečo sa vyskytuje chyba? Dôvod je v tom, že do parametra funkcie sme napísali názov súboru. To znamená, že čítaný súbor by mal byť umiestnený v rovnakom priečinku, ako je spúšťaný skript.
Avšak, náš čítaný súbor sa nachádza o úroveň vyššie, teda v priečinku, ktorý obsahuje priečinok so skriptom.
V takom prípade musíme explicitne uviesť v ceste
k súboru, že tento súbor treba hľadať o úroveň
vyššie. Na to pred názov súboru treba
napísať ../. Urobme to:
<?php
echo file_get_contents('../test.txt'); // súbor bude prečítaný
?>
Príklad
Predpokladajme, že máme nasledujúcu štruktúru súborov:
- /script/
- index.php
- /directory/
- test.txt
V tomto prípade pri čítaní súboru najprv vystúpime o úroveň vyššie a potom uvedieme cestu k nášmu súboru relatívne vzhľadom na túto úroveň:
<?php
echo file_get_contents('../directory/test.txt');
?>
Príklad
Predpokladajme, že máme nasledujúcu štruktúru súborov:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
V tomto prípade budeme musieť vystúpiť nahor dvakrát:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktické úlohy
Napíšte kód, ktorý prečíta obsah textového súboru:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Napíšte kód, ktorý prečíta obsah textového súboru:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Napíšte kód, ktorý prečíta obsah textového súboru:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Napíšte kód, ktorý prečíta obsah textového súboru:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/