ფარდობითი გზები 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/