PHP Sertakan Kekeliruan Laluan Relatif
Apabila cuba memasukkan fail PHP dari laluan relatif, pembangun mungkin menghadapi ralat yang tidak dijangka walaupun menetapkan termasuk laluan dengan betul. Artikel ini menyelidiki kemungkinan punca ralat sedemikian, menyediakan penyelesaian menggunakan DIR dan pemalar nama dirna.
Isu:
Seseorang pengguna struktur kod termasuk dua fail, /root/connect.php dan /root/update/test.php. connect.php cuba memasukkan "../config.php", dengan mengandaikan bahawa config.php terletak dalam /root. Walau bagaimanapun, test.php menyertakan connect.php dan menetapkan laluan sertakan kepada ".:/root", yang sepatutnya secara teorinya membenarkan kemasukan ../config.php daripada /root.
The Ralat:
Walaupun laluan termasuk yang betul ditetapkan, kod gagal untuk mencari config.php dan melemparkan amaran PHP yang menunjukkan bahawa fail itu tidak wujud. Ini membingungkan kerana laluan relatif kepada config.php (/root/config.php) berada dalam laluan include yang ditetapkan.
Penyelesaian:
Kunci untuk menyelesaikan isu ini terletak pada memahami tingkah laku laluan relatif dalam PHP. Walaupun sertakan menyokong laluan relatif, titik permulaan sentiasa direktori semasa fail yang melaksanakan pernyataan sertakan. Dalam kes ini, connect.php dilaksanakan dalam /root/connect.php, jadi apabila ia cuba memasukkan "../config.php", ia kelihatan dalam direktori /root/connect.php/, yang tidak mengandungi konfigurasi .php.
Untuk mengatasi had ini, pemalar DIR boleh digunakan untuk merujuk direktori fail semasa. Menggabungkan nama fail kepada DIR menyediakan laluan mutlak ke fail yang dikehendaki.
Kod dengan Penyelesaian:
connect.php:
include(dirname(__DIR__).'/config.php');
Kod ini akan menggunakan laluan mutlak dirname(__DIR__).'/config.php' untuk memasukkan config.php, memastikan ia ditemui tanpa mengira direktori semasa.
Test.php:
set_include_path(".:/root"); include "connect.php";
Dengan pengubahsuaian ini, test.php akan berjaya memasukkan connect.php, yang seterusnya akan menyertakan config.php daripadanya yang betul lokasi.
Kesimpulan:
Memahami tingkah laku laluan relatif dan menggunakan DIR dan pemalar dirname membolehkan pembangun memasukkan fail dari laluan relatif dengan tepat , walaupun semasa bekerja dengan struktur direktori yang kompleks.
Atas ialah kandungan terperinci Mengapa PHP Saya Disertakan Gagal Walaupun Dengan Laluan Sertakan Yang Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!