LaravelでPOSTリクエスト等を送信する場合は、CSRF対策用のトークンをhiddenタグにセットします。通常@csrf
ディレクティブを<form></form>の中に入れることで、hiddenタグが自動生成されます。
これを入れ忘れて、フォーム送信時に419 PAGE EXPIREDというエラーを発生させるのが、よくやりがちなミスですが、今回@csrf
を入れているのにも関わらず、419エラーが発生することがありました。
他で紹介されているキャッシュやセッションファイルの削除等を試しましたが、エラーが解消されず、色々と調べた結果、POSTリクエストに含まれる変数の数(inputタグ等の数)が多すぎたため、PHPの設定により上記トークンを含むリクエストの一部が削除されてしまっていたことが分かりました。
php.iniのmax_input_varsという項目を設定することで解消しました。(初期値は1000)
; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 100000
リクエストのデータサイズが大きい場合は、次の設定も更新する必要があります。
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 64M
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 64M