Laravelでファイルアップロードが失敗する場合の対処法

Laravelで作成したアプリケーションでファイルアップロードしようとしたら失敗しました。
ログを見るとこんなWarningが出力されています。

PHP Warning:  POST Content-Length of 20663856 bytes 
exceeds the limit of 8388608 bytes in Unknown on line 0

POSTリクエストの中身が8MBを超えてますよっていう内容ですね。
PHPではセキュリティなどの都合でリクエストの上限サイズが設定されています。
上限サイズを変更したい場合はphp.iniの設定を変更する必要があります。

post_max_sizeを確認する

php.iniファイルを開いてpost_max_sizeを探します。

post_max_size = 8M

これを超えるサイズのリクエストは空になってしまいますので、指定サイズに変更します。

post_max_size = 50M

大きなファイルをアップロードすると403になってしまったりする場合はこれが原因である場合が多いです。
ログインユーザー情報もリクエストから消えてしまうんですね。

upload_max_filesizeを確認する

同様にしてphp.iniファイルからupload_max_filesizeを探します。

upload_max_filesize = 2M

これを超えるサイズのファイルアップロードは、リクエストの中からファイルのみ空となってしまいます。
こちらはリクエスト自体は空にならないので、注意が必要です。

upload_max_filesize = 40M

2つの値を設定したらサーバーを再起動するのを忘れないようにしてください。

それでも改善しない場合

プロジェクトが参照しているphp.iniと異なるファイルを変更しているかもしれません。
phpinfo()メソッドを使用して、指定のphp.iniと変更したphp.iniが同じパスのものか確認してください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.