首頁  >  文章  >  後端開發  >  php下載大檔案時錯誤怎麼辦

php下載大檔案時錯誤怎麼辦

藏色散人
藏色散人原創
2022-11-13 09:47:121750瀏覽

php下載大檔案時錯誤的解決方法:1、在伺服器上查看nginx日誌;2、 查看到fpm運行身分;3、編輯nginx配置設定身分;4、透過「chown -R daemon / aichenk/soft/nginx/fastcgi_temp/”更改路徑即可。

php下載大檔案時錯誤怎麼辦

本教學操作環境:windows7系統、PHP8.1版、Dell G3電腦。

php下載大檔案時錯誤怎麼辦?

記PHP下載大檔案失敗的一次坑

說明

#php提供檔案的儲存和下載,nginx作為web伺服器,fpm做解析。

現象

當下載5M大小的圖片時,總提示下載失敗,或下載下來的檔案不完整,僅顯示部分圖片(每次下載不一樣)

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);

解決

找了一圈後去伺服器上查看了nginx日誌,確實有報錯資訊

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顯示權限問題,最後把nginx運行身份與fpm進行統一

# fpm配置
[www]
user = daemon
group = daemon
 
# 查看到fpm运行身份为`daemon`,编辑nginx配置设置身份
 
# nginx配置
#user  nobody;
user daemon;

之前路徑歸屬用戶更改

chown -R daemon /aichenk/soft/nginx/fastcgi_temp/

測試透過

##解釋

#個人分析這次錯誤其實是資料放到緩衝區才體現,理論上不光是大文件,資料傳輸量超過一定值也會有這個問題,在搭建環境的時候注意就可以了

推薦學習:《

PHP影片教學

以上是php下載大檔案時錯誤怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn