Относителни пътища в PHP
Както вече знаете, в параметъра на функцията file_get_contents
трябва да се пише името на файла. Това обаче работи
само в случай, че файлът за четене се намира
в същата папка, в която се стартива нашият скрипт.
Ако файлът се намира на друго място, тогава в параметъра на функцията трябва да се напише пътят до този файл.
Нека разгледаме пример.
Пример
Да предположим, че имаме следната структура на файловете:
- index.php
- /directory/
- test.txt
Нека прочетем съдържанието на текстовия файл. За това освен името на файла ще ни трябва да посочим и папката, в която се намира:
<?php
echo file_get_contents('directory/test.txt');
?>
Пример
Да предположим, че имаме следната структура на файловете:
- /script/
- index.php
- test.txt
В този случай опитът да прочетем нашия файл, като посочим в пътя само неговото име, ще завърши с грешка:
<?php
echo file_get_contents('test.txt'); // ще даде грешка
?>
Защо се получава грешка? Работата е там, че в параметъра на функцията сме написали името на файла. Това означава, че файлът за четене трябва да се намира в същата папка, в която се стартира изпълнимият файл.
Нашият файл за четене обаче се намира с едно ниво по-нагоре, тоест в папката, която съдържа папката със скрипта.
В този случай трябва изрично да посочим в пътя
до файла, че този файл трябва да се търси с едно ниво
по-нагоре. За това преди името на файла трябва
да се напише ../. Нека направим това:
<?php
echo file_get_contents('../test.txt'); // файлът ще бъде прочетен
?>
Пример
Да предположим, че имаме следната структура на файловете:
- /script/
- index.php
- /directory/
- test.txt
В този случай при четене на файла първо излизаме с едно ниво нагоре, а след това посочваме пътя до нашия файл спрямо това ниво:
<?php
echo file_get_contents('../directory/test.txt');
?>
Пример
Да предположим, че имаме следната структура на файловете:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
В този случай ще се наложи да излезем нагоре два пъти:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Практически задачи
Напишете код, който ще прочете съдържанието на текстовия файл:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Напишете код, който ще прочете съдържанието на текстовия файл:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Напишете код, който ще прочете съдържанието на текстовия файл:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Напишете код, който ще прочете съдържанието на текстовия файл:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/