商品規格の組み合わせが100個くらいある環境では、商品に規格を設定しようとしても保存に失敗してしまうケースがあります。
商品規格の組み合わせが多すぎると、設定したい規格にチェックを入れ価格などを入力して保存しようとすると、数量や価格が空になって値を入力するようエラーが表示されます。値を入れ直しても同じようにエラーが繰り返され、保存することができなくなります。
このような現象が起こった際の対処法をご紹介いたします。
EC-CUBE4で商品規格の組み合わせが多すぎて保存に失敗する時の対処法
原因
すべての環境がこの通りではないと思いますが、商品規格の保存時に一度にPOSTできる上限を超えていることが原因である可能性が高いです。PHP5.3.9以降ではmax_input_varsという設定が追加され、一度にPOSTできる数に上限が設けられています。max_input_varsのデフォルト値は”1000″になっています。
利用しているサーバーのmax_input_varsの設定値を確認するには、EC-CUBE4の管理画面で[設定] – [システム設定] – [システム情報]を開きます。「max_input_vars」で検索するとPHP情報のところに設定値が見つかります。
上記の画像は設定値を変更しているので値が10000になっていますが、php.ini等を変更していなければ1000になっていると思います。
また、max_input_varsの設定値が影響していた場合、サーバーのエラーログを見ると、以下のようなエラーが記録されています。
[fcgid:warn] [pid 379623:tid 380000] [client ***.***.***.***:57936] mod_fcgid: stderr: PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0, referer: https://example.com/admin/product/product/class/175
対処法
max_input_varsの設定値を変更して、一度にPOSTできる数の上限を増やせば解決します。
php.iniに以下を追加することで、max_input_varsの設定値を変更できます。値は10000にしておけば、大抵の処理は成功するはずです。
max_input_vars = 10000
.htaccessを使って設定値を変更する場合は、以下のように記述します。
php_value max_input_vars 10000
あとがき
商品規格の設定保存に失敗してしまう場合、サーバーのエラーログを確認しないと、max_input_varsが原因であることに気付けませんね。システムの扱いに慣れていればすぐにログを見るとは思いますが、慣れていない方はこの原因にたどり着くのは難しいと思います。
商品規格の組み合わせが多くて保存に失敗する場合は、ぜひ参考にしていただければ幸いです。