Đường dẫn tương đối trong PHP
Như bạn đã biết, tham số của hàm file_get_contents
nên được viết tên tệp. Tuy nhiên, điều này chỉ hoạt động
trong trường hợp tệp cần đọc nằm
trong cùng thư mục với tập lệnh đang chạy.
Nếu tệp nằm ở nơi khác, thì tham số của hàm cần phải viết đường dẫn đến tệp đó.
Hãy xem xét một ví dụ.
Ví dụ
Giả sử chúng ta có cấu trúc tệp sau:
- index.php
- /directory/
- test.txt
Hãy đọc nội dung của tệp văn bản. Để làm điều này, ngoài tên tệp, chúng ta cần chỉ ra thư mục chứa nó:
<?php
echo file_get_contents('directory/test.txt');
?>
Ví dụ
Giả sử chúng ta có cấu trúc tệp sau:
- /script/
- index.php
- test.txt
Trong trường hợp này, việc thử đọc tệp của chúng ta bằng cách chỉ định tên của nó làm đường dẫn sẽ kết thúc bằng lỗi:
<?php
echo file_get_contents('test.txt'); // sẽ báo lỗi
?>
Tại sao lại xảy ra lỗi? Vấn đề là chúng ta đã viết tên tệp vào tham số của hàm. Điều này có nghĩa là tệp cần đọc phải được đặt trong cùng thư mục với tập lệnh đang chạy.
Tuy nhiên, tệp cần đọc của chúng ta lại nằm ở một cấp cao hơn, tức là trong thư mục chứa thư mục có tập lệnh.
Trong trường hợp này, chúng ta phải chỉ định rõ ràng trong đường dẫn
đến tệp, rằng cần tìm tệp này ở một cấp
cao hơn. Để làm điều này, trước tên tệp cần
viết ../. Hãy thực hiện:
<?php
echo file_get_contents('../test.txt'); // tệp sẽ được đọc
?>
Ví dụ
Giả sử chúng ta có cấu trúc tệp sau:
- /script/
- index.php
- /directory/
- test.txt
Trong trường hợp này, khi đọc tệp, trước tiên chúng ta sẽ đi lên một cấp, sau đó chỉ định đường dẫn đến tệp của chúng ta tương đối với cấp đó:
<?php
echo file_get_contents('../directory/test.txt');
?>
Ví dụ
Giả sử chúng ta có cấu trúc tệp sau:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Trong trường hợp này, chúng ta cần đi lên hai lần:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Bài tập thực hành
Viết mã để đọc nội dung của tệp văn bản:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Viết mã để đọc nội dung của tệp văn bản:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Viết mã để đọc nội dung của tệp văn bản:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Viết mã để đọc nội dung của tệp văn bản:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/