Menyahpepijat "Gagal Membuka Strim: Tiada Fail atau Direktori Sebegitu" Ralat dalam Skrip PHP
Menjalankan skrip PHP sering membawa kepada ralat atau amaran seperti:
Failed to open stream : No such file or directory.
Salin selepas log masuk
Untuk mengenal pasti punca asas dengan berkesan, berikut ialah komprehensif senarai semak:
1. Sahkan Ketepatan Laluan Fail
- Semak secara manual sama ada kesilapan menaip dalam laluan fail.
- Buat pembolehubah untuk laluan itu, bergemakannya dan salinnya untuk menyemak kebolehaksesan secara manual dalam terminal.
2. Tentukan Pertimbangan Laluan Relatif lwn. Mutlak
- Laluan mutlak bermula dengan "/" dan rujuk pada direktori akar pelayan.
- Laluan relatif dikira berdasarkan direktori kerja semasa.
- Sentiasa gunakan laluan fail mutlak untuk mudah alih dan keteguhan.
- Gunakan DIR pemalar ajaib atau cipta pemalar SITE_ROOT untuk menjana laluan mutlak secara dinamik.
3. Semak Laluan Sertakan
- Fail boleh disertakan melalui laluan sertakan, terutamanya untuk pustaka atau rangka kerja.
- Semak laluan sertakan menggunakan get_include_path().
- Tambah yang diperlukan folder ke laluan menggunakan set_include_path().
4. Sahkan Akses Pelayan kepada Fail
- Pastikan bahawa pengguna yang menjalankan proses pelayan mempunyai kebenaran untuk mengakses fail.
- Semak butiran pengguna menggunakan posix_getpwuid dan kebenaran fail menggunakan "ls -l" dalam terminal.
5. Periksa Tetapan PHP
- open_basedir: Mengehadkan akses kepada direktori tertentu. Semaknya menggunakan phpinfo() atau ini_get("open_basedir").
- safe_mode: Tetapan lama yang mungkin mengenakan sekatan. Naik taraf kepada versi PHP yang disokong jika masih digunakan.
- allow_url_fopen dan allow_url_include: Relevan untuk mengakses fail melalui rangkaian, bukan secara setempat. Semak menggunakan ini_get().
Sarung Sudut
1. Kemasukan Pustaka dengan Ketergantungan Laluan Sertakan
- Pustaka mungkin termasuk fail lain dengan mengandaikan laluan sudah berada dalam laluan sertakan.
- Tambahkan direktori yang diperlukan pada laluan sertakan anda.
2. Pengaruh SELinux
- Semak sama ada SELinux didayakan dan menyebabkan penolakan akses fail.
- Lumpuhkan SELinux buat sementara waktu untuk mengasingkan punca.
- Konfigurasikan SELinux untuk memberikan akses yang sesuai kepada fail .
3. Isu Cache Symfony
- Dalam Symfony, muat naik ke pelayan mungkin gagal disebabkan masalah cache.
- Kosongkan cache menggunakan arahan konsol "cache:clear".
4. Aksara Bukan ASCII dalam Fail Zip
- Aksara bukan ASCII dalam nama fail zip boleh menyebabkan ralat.
- Enkodkan nama fail menggunakan utf8_decode() sebelum mencipta fail sasaran.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah Ralat PHP 'Gagal Membuka Strim: Tiada Fail atau Direktori Sebegitu'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!