เส้นทางสัมพัทธ์ใน PHP

ดังที่คุณทราบแล้ว ในพารามิเตอร์ของฟังก์ชัน file_get_contents ควรเขียนชื่อไฟล์ อย่างไรก็ตาม สิ่งนี้จะใช้งานได้ เฉพาะในกรณีที่ไฟล์ที่ต้องการอ่านอยู่ ในโฟลเดอร์เดียวกับที่สคริปต์ของเราเริ่มทำงาน

แต่ถ้าไฟล์อยู่ในตำแหน่งอื่น จำเป็นต้องเขียนพาธ ไปยังไฟล์นั้นในพารามิเตอร์ของฟังก์ชัน

มาดูตัวอย่างกัน

ตัวอย่าง

สมมติว่าเรามีโครงสร้างไฟล์ดังต่อไปนี้:

ลองอ่านเนื้อหาของไฟล์ข้อความนั้น สำหรับสิ่งนี้ นอกจากชื่อไฟล์แล้ว เราจำเป็นต้อง ระบุโฟลเดอร์ที่ไฟล์นั้นอยู่ด้วย:

index.php<?php
  echo file_get_contents('directory/test.txt');
?>

ตัวอย่าง

สมมติว่าเรามีโครงสร้างไฟล์ดังต่อไปนี้:

ในกรณีนี้ ความพยายามอ่านไฟล์ของเรา โดยระบุพาธเป็นเพียงชื่อไฟล์ จะจบลงด้วย ข้อผิดพลาด:

script/index.php<?php
  echo file_get_contents('test.txt'); // จะส่งคืนข้อผิดพลาด
?>

ทำไมถึงเกิดข้อผิดพลาดล่ะ? ความจริงก็คือ เรา เขียนชื่อไฟล์ในพารามิเตอร์ของฟังก์ชัน นั่น หมายความว่าไฟล์ที่ต้องการอ่านควรจะอยู่ใน โฟลเดอร์เดียวกับไฟล์ที่กำลังถูกเรียกใช้งาน

อย่างไรก็ตาม ไฟล์ที่เราต้องการอ่านอยู่ในระดับ ที่สูงกว่า นั่นคืออยู่ในโฟลเดอร์ที่มี โฟลเดอร์ของสคริปต์อยู่ภายใน

ในกรณีเช่นนี้ เราต้องระบุในพาธ ของไฟล์อย่างชัดเจนว่าไฟล์นี้ต้องค้นหาในระดับ ที่สูงกว่า สำหรับสิ่งนี้ ควรเขียน ../ ไว้ก่อนชื่อไฟล์ มาลองทำกัน:

php<?php
  echo file_get_contents('../test.txt'); // ไฟล์จะถูกอ่าน
?>

ตัวอย่าง

สมมติว่าเรามีโครงสร้างไฟล์ดังต่อไปนี้:

ในกรณีนี้ เมื่ออ่านไฟล์ เราจะ ออกไปหนึ่งระดับก่อน จากนั้นจึงระบุพาธ ไปยังไฟล์ของเราโดยสัมพันธ์กับระดับนั้น:

script/index.php<?php
  echo file_get_contents('../directory/test.txt');
?>

ตัวอย่าง

สมมติว่าเรามีโครงสร้างไฟล์ดังต่อไปนี้:

ในกรณีนี้ เราจะต้องขึ้นไปข้างบน สองครั้ง:

script/test/index.php<?php
  echo file_get_contents('../../directory/test.txt');
?>

โจทย์ฝึกปฏิบัติ

Задание 1

เขียนโค้ดที่อ่านเนื้อหา ของไฟล์ข้อความ:

  • index.php
  • /dir1//dir2/test.txt
Задание 2

เขียนโค้ดที่อ่านเนื้อหา ของไฟล์ข้อความ:

  • /script/index.php
  • /dir1//dir2/test.txt
Задание 3

เขียนโค้ดที่อ่านเนื้อหา ของไฟล์ข้อความ:

  • /script1//script2/index.php
  • /dir/test.txt
Задание 4

เขียนโค้ดที่อ่านเนื้อหา ของไฟล์ข้อความ:

  • /script1//script2//script3/index.php
  • /dir1//dir2//dir3/test.txt