cakephp3でJSで書き換えてないのにファイルアップロードするとCSRF token mismatchと出た

PHP

CSRFトークンエラーが出ました。

ただ、特に何かスクリプトを使ってフォームの情報を変更したりしていないので、なぜ発生するのかよくわからない状態でした。

 

ログを見てみると

POST Content-Length of 12329778 bytes exceeds the limit of 8388608 bytes in Unknown on line 0…….

とか出ていました。

 

原因は「POSTするファイルの上限を超えていたこと」

確認すると、正しくPOSTできるファイルと、正しくPOSTできないファイルが存在しました。調べてみるとPOSTするファイル容量の上限に引っかかっているみたいでした。

ファイル容量上限に引っかかったことでCSRFトークンがPOSTされないから、CSRFトークンのエラーとなったようです。

php.iniの

upload_max_filesize
post_max_size

を見直して、再起動して完了です。

 

スクリプトなどでフォームを変更したときに発生するCSRFトークンのエラーですが、上記のようなパターンでもエラーになることがわかりました。わかりにくいよ。