【Laravel】413 (payload too large) が出た時の対処法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
動画や画像などのファイルをアップロードしたときに、
413 (payload too large)
と出た時の対処法についての記事です。
1なぜ起きるのか
ローカルサーバーにしろ、本番サーバーにしろ、サーバーの設定というものが存在します。
そのサーバーの設定に、
「POST 送信できるファイルの容量の上限」「保存できるファイルの容量の上限」が指定されています。
これを設定しないと、1兆 G バイトの容量のファイルを送信されたら終わるからです。
フロントでバリデーション → サーバーの処理でバリデーション → サーバーの設定でバリデーション
などという感じで1兆 G バイトのファイルからは絶対に逃げましょう。
2サーバーの設定はどうやってみるのか
どこでもいいので Blade ファイルに(今バグと戦っているページで)
<?php phpinfo() ?>
とコードを書いてみてください。
そして更新を押すと・・・・
こんな感じで、PHP のサーバー情報が表示されます。超長いです。 そのなかに、
upload_max_filesize 30M 30M
post_max_size 30M 30M
こんな感じで指定があるはずです。上がアップロード上限で、下が POST の上限みたいです。
自分は動画を取り扱うので多少幅を持たせて多めに30 M としています。
3編集方法
サーバーの設定をしているファイルを編集すればこの数字が変更できます。
どこにあるのか・・・というのは、phpinfo()に書いてあります。
Loaded Configuration File /usr/local/etc/php/7.4/php.ini
たとえばこんな感じ!
これは、起動しているローカルの状況によって違います。
Finder で探しても良いのですが、編集する場所が2箇所だけなのでターミナルで Vim を使って修正しましょう。
Vim っていうのはターミナルで操作するメモ帳(みたいな)やつで、ファイルのパスがわかれば簡単に開くことができるので楽です。
ターミナルのコマンドで
Vim パスと入力するだけでファイルが開きます。今回は、
vim /usr/local/etc/php/7.4/php.ini
と入力すれば ok です。
そうするといっぱい文字が出てきます。最初はビビります。
Vim は「閲覧モード?」「編集モード?」があって(正式名称はわかりません)、
編集モードにするにはキーボード(自分は a を押します)を押すと、編集が可能になります。
独特な操作感なので変に削除とかしないように気をつけてください。
編集モード → 閲覧モードへは、ESC を押してください。
閲覧モードの時に、
/
スラッシュだけ
を打ってみてください。
ターミナルの一番下に/が表示されたと思います。
表示されなかったら編集モードになってるかもしれないので、気をつけてください。
半角になってなくてもうまくいかないと思います。
/検索ワード で検索ができます。
なので
/upload_max_filesize
と打てば検索できます。
検索 したら編集モードにして数値を変更。
ESCを押して、閲覧モードにして、post_max_sizeも同様に検索して変更。
閲覧モード状態で、
:wq
と打てば、書き換え後に Quit しますので、編集が終了します。
そしたら phpinfo()に戻りましょう。
さきほど確認した数字が変わっていれば成功です!
まとめ
以上です。うまくいきましたでしょうか?
ご意見、苦情は TwitterDM からお願いします。
今後 Laravel の記事は継続して書いていく予定ですのでぜひフォローお願いします〜。