เส้นทางสัมพัทธ์ใน 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/