"Tidak dapat membuka fail yang diperlukan, PHP mengalami ralat maut"
P粉345302753
2023-08-20 17:22:12
<p>Saya mendapat ralat berikut daripada Apache: </p>
<p><strong>[Sab 19 Mac 23:10:50 2011] [amaran] mod_fcgid: stderr: PHP ralat maut: require_once() [function.require]: Membuka '/common/configs/config_templates.inc. php' gagal (include_path='.:/usr/share/pear:/usr/share/php') pada baris 158 /home/viapics1/public_html/common/configs/config.inc.php </strong> ;/p>
<p>Saya pastinya bukan pakar Apache, tetapi fail config.inc.php dan config_templates.inc.php kedua-duanya ada. Saya juga cuba menavigasi ke halaman test.html yang saya letakkan di bawah direktori common/configs/, jadi saya tidak fikir terdapat masalah kebenaran. Saya juga menetapkan kebenaran pada fail config_templates.inc.php untuk memberi semua orang kebenaran membaca, menulis dan melaksanakan. Tidak pasti apa yang perlu dilakukan, saya menyemak sama ada terdapat direktori /usr/share/php dan mendapati bahawa tiada satu pun, tetapi apabila saya memasang php menggunakan yum, ia berkata ia sudah pun versi terkini. Ada apa-apa cadangan? </p>
Jika anda menjalankan SELinux, anda mungkin perlu memberi kebenaran httpd untuk membaca direktori /home, gunakan arahan berikut:
Ini sebenarnya bukan soalan berkaitan Apache malah soalan berkaitan PHP. Untuk memahami ralat ini, anda mesti membezakan antara laluan pada pelayan maya dan laluan dalam sistem fail.
require
pengendali digunakan pada fail. Tetapi jalan seperti iniHanya wujud pada pelayan HTTP maya, tiada laluan sedemikian dalam sistem fail. Laluan sistem fail yang betul hendaklah
Antaranya
Bahagiandipanggil Document Root dan ia menghubungkan dunia maya dengan dunia nyata. Nasib baik, pelayan web biasanya mempunyai akar dokumen dalam pembolehubah konfigurasi yang dikongsi dengan PHP. Jadi jika anda menukar kod anda seperti ini
Ia akan berfungsi dalam mana-mana fail dalam mana-mana direktori!
Kemas kini: Akhirnya saya menulis artikel yang menerangkan perbezaan antara laluan relatif dan mutlak pada sistem fail dan pelayan web, menerangkan masalah secara terperinci dan termasuk beberapa penyelesaian praktikal. Sebagai contoh, apabila anda menjalankan skrip dari baris arahan, pembolehubah mudah seperti itu tidak wujud. Dalam kes ini, ia boleh diselesaikan menggunakan teknik yang dipanggil "single entry". Anda juga boleh merujuk artikel di atas untuk butiran lanjut.