ホームページ > バックエンド開発 > PHPの問題 > PHPで大きなファイルをダウンロードするときにエラーが発生した場合の対処方法

PHPで大きなファイルをダウンロードするときにエラーが発生した場合の対処方法

藏色散人
リリース: 2023-03-17 13:06:01
オリジナル
1820 人が閲覧しました

php が大きなファイルをダウンロードするときのエラーの解決策: 1. サーバー上の nginx ログを表示します; 2. fpm 実行中の ID を表示します; 3. nginx 構成を編集して ID を設定します; 4. 「chown」を渡します-R daemon / aichenk/soft/nginx/fastcgi_temp/" パスを変更するだけです。

PHPで大きなファイルをダウンロードするときにエラーが発生した場合の対処方法

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.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 の実行 ID と 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート