質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

888閲覧

Laravelで700MB程度のアップロードに失敗する

uemon

総合スコア37

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/08/09 13:30

AWSのEC2にLaravel5.6を入れて、EC2内のEBSにファイル(PDF)をアップロードするプログラムを作成しました。
500MB程度のファイルは成功するのですが、700MB程度のファイルになると、アップロードが出来ていません。
Laravelのコントローラー内で、

$error = $request->file('testupload')->getErrorMessage();

でエラーメッセージを見ると、

The file "〇〇.pdf" was only partially uploaded.

となっています。

思いつく設定としては、.htaccessで以下を設定しています。

htaccess

1max_execution_time 300 2max_input_time 300 3post_max_size 1000M 4memory_limit 1500M 5upload_max_filesize 1000M

また、EC2にロードバランサーを使っていますので、ロードバランサーの可能性も考え、
ロードバランサーのアイドル時間は、

EC2

1アイドルタイムアウト 300 秒

に設定しています。

また、httpd.confでは、

httpd.conf

1KeepAliveTimeout 120 2Timeout 120

に設定しています。

プログラムは単純で、

html

1<form method="post" action="/upload" enctype="multipart/form-data"> 2 {{ csrf_field() }} 3 <input type="file" name="testupload"> 4 <input type="submit" name="test_upload" value="アップロード"> 5</form>

Controller

1public function upload(Request $request) 2{ 3 if ($request->file('testupload')->isValid([])) { 4 logger('upload success'); 5 } else { 6 $error = $request->file('testupload')->getErrorMessage(); 7 logger($error); 8 } 9 return view('finish'); 10}

だけのシンプルなものです。

サーバーのメモリも足りていると思います。

$ free -m total used free shared buffers cached Mem: 959 334 624 0 44 99 -/+ buffers/cache: 190 768 Swap: 1023 0 1023

もう自分では思いつく原因がないのですが、何か見落としてそうな設定があれば、ご教授いただければ幸いです。
どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/09 13:35

どれくらいのサイズまでならアップロードできているのでしょうか
uemon

2019/08/09 13:52

ご返信ありがとうございます。 500MBはOKです。550MBは駄目でした。
uemon

2019/08/09 14:14

もしかすると、 df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 470M 56K 470M 1% /dev tmpfs 480M 0 480M 0% /dev/shm となっていますので、tmpfsの容量が原因でしょうか?
uemon

2019/08/09 23:41 編集

上記のように思いましたが、upload_tmp_dirは、/tmpの下にアップロードしており、/tmpの容量は、30Gあるので、アップロード領域のディスクが足りてないこともなさそうです。 df /tmp -h Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p1 30G 8.1G 22G 28% /
guest

回答1

0

自己解決

自己解決しました。

https://stackoverflow.com/questions/33375823/apache-proxfy-fcgi-error-dispatching-request-to

上に書かれていることと同じ原因のようでした。
httpd.confに以下の記述を追加し、再起動すると、700MBでもアップロードできるようになりました。
(しかし、これまでこんな設定したことなかったのですが・・・)

RequestReadTimeout handshake=0 header=20-600,MinRate=500 body=20,MinRate=500

投稿2019/08/10 00:01

uemon

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問