ファイルアップロードで最近知ったこと

こんにちは。ニッパチです。
まぁまぁ長いこと開発に携わってきましたが、先日業務で初めて知ったことがありましたので書いていきます。

現象

Laravelで構築したシステムでファイルをアップロードする機能があり、今回の要件で複数ファイルのアップロードに対応してほしいと依頼がありました。サクッと対応して先方の受け入れ段階で「20件以上選択すると20件しかアップロードできない」と連絡がありました。まず一度にそんなアップロードするユースケースあるんだと驚きましたが、なぜこんな現象が起こるのか見当もつきませんでした。もちろんプログラム内でそんな処理はしていません。考慮してそうだけど実に今まで考えたこともなかったなと反省しました。

原因

調べるとphp.iniの設定でmax_file_uploadsという項目があることに気づきました。これはデフォルトで20になっており原因はこれでした。原因を報告するとバリデーションチェックを追加する方向になりました。Requestクラスのルールにmax:20を設定しこれで解決かと思いましたがまだ直っていませんでした。バリデーションチェックが効いていない?なんで?
PHPのドキュメントに以下の記載がありました。

max_file_uploads は一回のリクエストあたりでアップロードできるファイルの数の制限値となります。 この制限を超える数のファイルをアップロードしようとすると、制限に達した時点で $_FILES は処理を停止します。たとえば max_file_uploads が 10 の場合には、$_FILES には 10 件までの要素しか入らないということです。

しょうがないのでフロントエンドでチェックするようにしました。

最後に

なんかエラー返してくれよと思いました。