php.iniにおけるupload_max_filesize と post_max_sizeの違いについて。
ちなみにphpinfo()で確認できる。
#upload_max_filesize
一つのファイルの最大ファイルサイズ。
この値を超えてしまうと、$_FILES[‘hoge’][‘error’]にUPLOAD_ERR_INI_SIZEがセットされる。
#post_max_size
POST送信全体のデータサイズ。
このpost_max_sizeを超えるサイズのPOST送信があった場合、$_FILES[‘hoge’][‘error’]はnullとなり、エラーコードはセットされない。
#気をつけること
PHPでは、設定したpost_max_sizen値より、ポストしたファイルサイズが大きかった場合、リクエスト内容そのものが破棄されるため、
リクエストに対してファイルサイズの大きさを制限するバリデーション(size)を使用してもバリデーション できない。
例えば、
upload_max_filesize = 20MB
post_max_size = 10MB
だったとして、POSTメソッドで、送信するファイルサイズが15MBだった場合、リクエスト内容そのものが破棄される。
→URLルーティングされたコントローラクラスより先にリクエストを受け取ることができる、Middlewareを利用して、バリデーションを行う。
#参考
https://pointsandlines.jp/server-side/php/laravel-post_max_size
https://ageo-soft.info/programming_languages/php/81/