您好,登錄后才能下訂單哦!
這篇“php下載大文件時錯誤如何解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“php下載大文件時錯誤如何解決”文章吧。
php下載大文件時錯誤的解決辦法:1、在服務器上查看nginx日志;2、 查看到fpm運行身份;3、編輯nginx配置設置身份;4、通過“chown -R daemon /aichenk/soft/nginx/fastcgi_temp/”更改路徑即可。
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/
測試通過
解釋
個人分析這次錯誤其實是數據放到緩沖區才體現,理論上不光是大文件,數據傳輸量超過一定值也會有這個問題,在搭建環境的時候注意就可以了。
一、phpStudy,是一個新手入門最常用的開發環境。
二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡單對小白比較友好。
三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包。
四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。
五、寶塔面板,寶塔面板是一款服務器管理軟件,支持windows和linux系統。
六、UPUPW,UPUPW是目前Windows平臺下最具特色的Web服務器PHP套件。
以上就是關于“php下載大文件時錯誤如何解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。