Deskripsi masalah
Pertama, mari kita lihat struktur direktori contoh kita dan isi dari ketiga file ini.
a.php
<? phpinclude './c/d.php'
b.php
<? phpdefine ('__ b', 'ini tes');C/D.PHP
<? phpinclude '../b.php';var_dump(__b);
File d.php di bawah direktori C mengacu pada file b.php di bawah direktori atasnya. Ini tidak akan memiliki masalah saat menjalankan C/D.PHP secara terpisah.
Namun, jika a.php merujuk c/d.php di direktori yang sama dengan B, akan ada masalah.
Itu melaporkan kesalahan yang mengatakan bahwa file tidak ada
memikirkan
Makna umum adalah bahwa setelah A.Php memperkenalkan C/D.Php ke dalam A.Php, jalur include '../b.php' relatif terhadap A.Php, dan jalur relatif untuk A.Php tidak ada, jadi masalah ini muncul.
Jika file dapat dirujuk di banyak tempat, cukup mudah untuk memiliki masalah, dan kemudian kita dapat dengan mudah menyelesaikan masalah ini menggunakan jalur absolut.
Gunakan jalur absolut untuk menyelesaikan masalah
Jika kami mengubah file ke yang berikut ini
a.php
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
b.php
<? phpdefine ('__ b', 'ini tes');C/D.PHP
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
Ini diubah untuk mengacu pada jalur absolut file. __DIR__ adalah konstanta ajaib yang telah ditentukan sebelumnya yang telah ada di php5.3, menunjukkan direktori di mana file berada. Kemudian kami menggunakan ini untuk menulis jalur absolut, yang dapat dieksekusi secara normal saat menjalankan a.php dan c/d.php. Jika dirname(__FILE__) digunakan sebagai ganti __DIR___ sebelum php5.3
Meringkaskan
Di atas adalah semua tentang masalah jalur relatif dalam PHP dan penggunaan jalur absolut. Saya berharap ini akan membantu semua orang yang menggunakan PHP dan menghindari memasuki lubang jalur relatif di PHP lagi.