#執筆背景
laravelを使って画像アップロード機能を実装していたところ、フォームからファイルを添付して送信ボタンを押した際に、
Call to a member function store() on string
413 Request Entity Too Large
というエラーが発生しました。
これについての対処方法をまとめていきます。
#結論
このエラーは、nginxの最大ファイルアップロードサイズのデフォルト値よりも大きいファイルをアップロードすると起こるエラーです。
(ちなみにデフォルト値は、2MBに設定されています。)
解決方法としては、
nginxの設定ファイルに記載されている最大ファイルアップロードサイズのデフォルト値を任意に変更する
ことで解決します。
参考記事 → https://www.keycdn.com/support/413-request-entity-too-large
#作業内容
nginxのファイルの場所は開発環境によって変わりますが、
今回はHomesteadを利用した開発環境での作業内容を記載するため、
それ以外の開発環境で作業をしている方は参考にならないかもしれません。
ご了承ください。
なお、今回使用しているlaravelのバージョンは6.xです。
vagrant上の**/etc/nginx/stes-enable**にサーバーの情報などが書かれたファイルである
Homestead.laravel← (この名前は、Homestead.yamlファイルで設定しているドメイン名によって変わります)
があるので中身をvimコマンドで開く
$ cd /etc/nginx/stes-enable
$ ls
Homestead.laravel
$ cd vim Homestead.laravel
Homestead.laravelファイルを開くと概ね以下のような内容が記載されているため、その中の
client_max_body_size
の項目を任意の値に変更する。
server {
listen 80;
listen 443 ssl http2;
server_name .homestead.laravel_tutorial;
root "/home/vagrant/laravel_tutorial/book_management/public";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100m; ← この値を(例えば100mなど)、余裕のある値に変更する
最後に、以下のコマンドでnginxを再起動する。
sudo service nginx reload
これでファイルのアップロードができるようになります。