Relativní cesty v PHP
Jak již víte, do parametru funkce file_get_contents
se zapisuje název souboru. To však funguje
pouze v případě, že čtený soubor leží
ve stejné složce, ve které je spouštěn náš skript.
Pokud soubor leží jinde, je do parametru funkce nutné zapsat cestu k tomuto souboru.
Podívejme se na příklad.
Příklad
Předpokládejme, že máme následující strukturu souborů:
- index.php
- /directory/
- test.txt
Pojďme si přečíst obsah textového souboru. K tomu kromě názvu souboru budeme potřebovat uvést i složku, ve které se nachází:
<?php
echo file_get_contents('directory/test.txt');
?>
Příklad
Předpokládejme, že máme následující strukturu souborů:
- /script/
- index.php
- test.txt
V tomto případě pokus o přečtení našeho souboru zadáním jeho názvu jako cesty skončí chybou:
<?php
echo file_get_contents('test.txt'); // vypíše chybu
?>
Proč se vypisuje chyba? Jde o to, že jsme do parametru funkce napsali název souboru. To znamená, že čtený soubor musí být umístěn ve stejné složce jako spouštěný skript.
Avšak náš čtený soubor se nachází o úroveň výše, tedy ve složce, která obsahuje složku se skriptem.
V takovém případě musíme explicitně uvést v cestě
k souboru, že tento soubor je třeba hledat o úroveň
výše. K tomu před název souboru je třeba
napsat ../. Udělejme to:
<?php
echo file_get_contents('../test.txt'); // soubor bude přečten
?>
Příklad
Předpokládejme, že máme následující strukturu souborů:
- /script/
- index.php
- /directory/
- test.txt
V tomto případě při čtení souboru nejprve vystoupáme o úroveň výše, a poté uvedeme cestu k našemu souboru vzhledem k této úrovni:
<?php
echo file_get_contents('../directory/test.txt');
?>
Příklad
Předpokládejme, že máme následující strukturu souborů:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
V tomto případě budeme muset vystoupit nahoru dvakrát:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktické úlohy
Napište kód, který přečte obsah textového souboru:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Napište kód, který přečte obsah textového souboru:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Napište kód, který přečte obsah textového souboru:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Napište kód, který přečte obsah textového souboru:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/