Проблемы с сохранением больших объемов данных (вариации, налоговые ставки и др.)

Если вы заметили, что вариации товаров, налоговые ставки и другие большие наборы данных не сохраняются, причиной может быть Suhosin (модуль безопасности PHP), который ограничивает передачу POST-данных. Также проблема может возникать на серверах с PHP версии 5.3.9+ и при использовании mod_security.

Настройка Suhosin

Если Suhosin включен, возможно, потребуется увеличить лимиты отправляемых данных. Настройки зависят от хостинга, поэтому лучше уточнить у провайдера. В некоторых случаях параметры можно изменить через php.ini, suhosin.ini или .htaccess.

Обычно требуется изменить следующие значения:

suhosin.post.max_array_index_length = 256
suhosin.post.max_totalname_length = 65535
suhosin.post.max_vars = 1024
suhosin.post.max_name_length = 256
suhosin.request.max_varname_length = 256
suhosin.request.max_array_index_length = 256
suhosin.request.max_totalname_length = 65535
suhosin.request.max_vars = 1024

После внесения изменений потребуется перезапустить сервер.

На виртуальном хостинге, где нет доступа к php.ini, можно попробовать задать параметры через .htaccess:

php_value suhosin.max_array_index_length 256
php_value suhosin.post.max_array_index_length 256
php_value suhosin.post.max_totalname_length 65535
php_value suhosin.post.max_vars 1024
php_value suhosin.post.max_name_length 256
php_value suhosin.request.max_varname_length 256
php_value suhosin.request.max_array_index_length 256
php_value suhosin.request.max_totalname_length 65535
php_value suhosin.request.max_vars 1024

Если вы используете не-латинские символы, рекомендуется увеличить значение:

suhosin.request.max_varname_length = 256

PHP 5.3.9+ и max_input_vars

В новых версиях PHP есть параметр max_input_vars, который по умолчанию обычно равен 1000. Это означает, что при отправке формы с более чем 1000 полями часть данных может обрезаться и не сохраниться.

Значение можно изменить в php.ini:

max_input_vars = 3000

Или через .htaccess (если используется виртуальный хостинг):

php_value max_input_vars 3000

Mod_security

Модуль mod_security также может блокировать сохранение данных. В этом случае могут появляться ошибки 503.

Возможные решения:

  • Настроить mod_security для пропуска данных (для опытных пользователей)
  • Отключить mod_security по IP
  • На некоторых хостингах (например, DreamHost) отключить параметр «Extra web security» в панели управления

WP Max Submit Protect

Чтобы убедиться, что проблема связана именно с ограничениями на отправку данных, можно временно установить и активировать плагин:

WP Max Submit Protect

Поделиться с друзьями
Документация WooCommerce