Решение проблемы с обрезанными массивами в PHP 5
Хотел сегодня написать небольшую статью о 2х параметрах которые появились в PHP, это post_max_size и post_max_vars.
post_max_size
Устанавливает максимально допустимый размер данных, отправляемых методом POST. Этот параметр влияет на вес передаваемых данных методом POST, так же важно учитывать его при реализации загрузки файлов через скрипты. По умолчанию данный параметр стоит 8Мб.
http://www.php.net/manual/ru/ini.core.php#ini.post-max-size
post_max_vars
Если про post_max_size все хорошо описано в мануале и он есть по умолчанию в конфигурации php, то про параметр post_max_vars глухая тишина. Так что же это такой за параметр. Post_max_vars указывает интерпретатору сколько будет обрабатываться строк в POST запросе, ограничение стоит по умолчанию 200 строк.
Для крупных проектов, особенно реализованных на таких тяжеловесах как Битрикс это довольно мало.
Поэтому, если вы столкнулись с проблемой, когда при сохранении данных вы получается обрезанный POST массив или массив в котором только часть передаваемых строк, значит вам нужно не искать ошибку в вашем скрипте, а менять параметры на сервере. Если такой возможности нет, значит надо переделывать скрипт так, что бы он не превышал лимитов.
Меняем значения post_max_size и post_max_vars
Если у вас в .htaccess разрешено переобъявление php параметров, то можно указать их там, например так:
php_value post_max_size 128M
php_value post_max_vars 800
Либо поменять в php.ini. Параметр post_max_size уже там указан, и достаточно найти его поиском и поменять, тогда как post_max_vars придется дописать, например под post_max_size.
Станьте первым!