前提・実現したいこと
・laravel6でフォームから動画を投稿できる機能を実装中
・MacのDocker上で開発中
・送信(post)するとファイルによっては失敗する
発生している問題・エラーメッセージ
413 Request Entity Too Large
該当のソースコード
php
1//StockController.php(コントローラー) 2 public function create(Request $request) 3 { 4 //中略 5 6 $request->file('stock_file')->storeAs('private/stock_data',hogehoge.mp4); 7 8 //中略 9 10 return redirect()->route('stocks.detail', [ 11 'stock_id' => $stock->id, 12 ])->with('message', '投稿しました。'); 13 }
php
1//create.blade.php(ビューファイル) 2 3//中略 4 5<form method="post" action="/stock" enctype="multipart/form-data"> 6 @csrf 7 8//中略 9 10 <div class="form"> 11 <div class="form-title"> 12 <div class="form-group"> 13 <span id="file_input_area"> 14 <input type="file" class="form-control-file " id="myImage" name="stock_file" 15 onChange="stockPreView(event)" accept=".mp4"> 16 </span> 17 </div> 18 19//中略 20 21 <div class="form-submit"> 22 <button type="submit" class="btn btn-warning cart_button btn-lg btn-primary btn-lg btn-block"><i 23 class="fas fa-plus-square">投稿する</i></button> 24 </div> 25 </div> 26</form> 27 28//中略
試したこと
postするファイルの最大サイズにまつわる部分を思いつく限り書き換えました。
↓laradock\nginx\nginx.conf
conf
1http { 2//中略 3 client_max_body_size 20000M; #数値を20Mから変更 4//中略 5}
↓laradock\nginx\sites\default.conf
conf
1server { 2//中略 3 client_max_body_size 20000M; #追加 4}
↓laradock\php-fpm\php7.3.ini
ini
1;中略 2post_max_size = 20000M ;8Mから変更 3 4;中略 5upload_max_filesize = 20000M ;2Mから変更 6 7;中略 8memory_limit = 2560M ;256Mから変更
↓その後、もろもろ再起動
docker-compose restart nginx mysql phpmyadmin Restarting laradock_nginx_1 ... done Restarting laradock_phpmyadmin_1 ... done Restarting laradock_mysql_1 ... done
↓php-fpmの再起動を失念していたので再起動
shimizudaisuke@shimizudaisukenoMacBook-Pro laradock % docker-compose restart nginx mysql phpmyadmin php-fpm Restarting laradock_nginx_1 ... done Restarting laradock_php-fpm_1 ... done Restarting laradock_phpmyadmin_1 ... done Restarting laradock_mysql_1 ... done
すると、アップロード時にブラウザに表示されていたnginxのエラー表示が、laravelの
lluminate\Http\Exceptions\PostTooLargeException
というエラー表示に変わりました。
↓(詳細)
Illuminate\Foundation\Http\Middleware\ValidatePostSize::handle vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:24
php
1 public function handle($request, Closure $next) 2 3 { 4 $max = $this->getPostMaxSize(); 5 if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) { 6 throw new PostTooLargeException;//24行目 7 } 8 return $next($request); 9 }
ValidatePostSize.phpというファイルを触ったことはありませんが、どちらにしてもファイルサイズが許容する値よりも大きいとのエラーが出ているように見えます。
アップロードしようとしたファイルは30MBほどデータなので、それぞれの設定ファイルを書き換えた後で
本来あれば問題ないのではないかと思いました。
これ以上どこを触ればいいのか見当がつきません。
知恵を貸していただきたいです。
補足情報(FW/ツールのバージョンなど)
laravel6
Docker version 20.10.0
PHP 7.3.24-3+ubuntu18.04.1
Composer version 2.0.8
ここにより詳細な情報を記載してください。