Rumah > Artikel > pembangunan bahagian belakang > Apa yang perlu dilakukan jika terdapat ralat semasa memuat turun fail besar dalam PHP
Penyelesaian kepada ralat apabila PHP memuat turun fail besar: 1. Lihat log nginx pada pelayan 2. Lihat identiti berjalan fpm 3. Edit konfigurasi nginx untuk menetapkan identiti; -R daemon / aichenk/soft/nginx/fastcgi_temp/" cuma tukar laluan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Apakah yang perlu saya lakukan jika terdapat ralat apabila php memuat turun fail yang besar?
Ingat masalah apabila PHP gagal memuat turun fail besar
Penjelasan
php menyediakan penyimpanan dan muat turun fail, nginx berfungsi sebagai pelayan web, dan fpm melakukan menghurai.
Fenomena
Apabila memuat turun gambar 5M, ia sentiasa menggesa bahawa muat turun gagal, atau fail yang dimuat turun tidak lengkap dan hanya sebahagian daripada imej dipaparkan (berbeza untuk setiap muat turun)
Kod berkaitan muat turun php
$file = BASE_PATH . '/public/files/IMG_5727.jpg'; $size = filesize($file); header( "Content-type: application/octet-stream" ); header("Accept-Ranges: bytes"); header("Accept-Length: {$size}"); header("Content-Disposition: attachment; filename=IMG_5727.jpg"); $fp = fopen($file, 'rb'); $readBuffer = 4096; while (!feof($fp)) { echo fread($fp, $readBuffer); } fclose($fp);
Penyelesaian
Selepas mencari, saya pergi ke pelayan untuk menyemak log nginx, dan memang terdapat ralat mesej
2020/05/06 13:09:13 [crit] 1482#0: *23258 open() "/aichenk/soft/nginx/fastcgi_temp/4/17/0000000174" failed (13: Permis sion denied) while reading upstream, client: 172.21.0.12, server: 192.168.5.5, request: "GET /temp/t2 HTTP/1.1", upstr eam: "fastcgi://127.0.0.1:9001", host: "192.168.5.5:8080"
nginx menunjukkan isu kebenaran, dan akhirnya menyatukan identiti berjalan nginx dengan fpm
# fpm配置 [www] user = daemon group = daemon # 查看到fpm运行身份为`daemon`,编辑nginx配置设置身份 # nginx配置 #user nobody; user daemon;
Pengguna pemilikan laluan sebelumnya berubah
chown -R daemon /aichenk/soft/nginx/fastcgi_temp/
Ujian lulus
Penjelasan
Analisis peribadi: Ralat ini sebenarnya tercermin apabila data diletakkan dalam penimbal Secara teori, bukan sahaja fail besar, tetapi juga jumlah penghantaran data melebihi nilai tertentu akan mengalami masalah ini Apabila menyediakan persekitaran Hanya beri perhatian apabila berbuat demikian
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika terdapat ralat semasa memuat turun fail besar dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!