Laravel

【Laravel】413 (payload too large) が出た時の対処法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

動画や画像などのファイルをアップロードしたときに、

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 の記事は継続して書いていく予定ですのでぜひフォローお願いします〜。