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 = 20M
大きなファイルをアップロードすると403になってしまったりする場合はこれが原因である場合が多いです。
ログインユーザー情報もリクエストから消えてしまうんですね。
upload_max_filesizeを確認する
同様にしてphp.iniファイルからupload_max_filesize
を探します。
upload_max_filesize = 2M
これを超えるサイズのファイルアップロードは、リクエストの中からファイルのみ空となってしまいます。
こちらはリクエスト自体は空にならないので注意が必要です。
upload_max_filesize = 30M
2つの値を設定したらサーバーを再起動するのを忘れないようにしてください。
それでも改善しない場合
プロジェクトが参照しているphp.iniと異なるファイルを変更しているかもしれません。
phpinfo()メソッド
を使用して、指定のphp.iniと変更したphp.iniが同じパスのものか確認してください。