Июл 162014
 

Решение проблемы с обрезанными массивами в PHP

 

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

post_max_size = 512M

Максимально допустимый размер данных, отправляемых через методом POST. Этот параметр влияет на объем передаваемых данных методом POST, так же важно учитывать его при реализации загрузки файлов через скрипты, в частности на размер файла эта директива и влияет. По умолчанию данный параметр стоит 8Мб.

post_max_vars = 2000

Если про post_max_size все хорошо описано в мануале и он есть по умолчанию в конфигурации php, то про параметр глухая тишина. Так что же это такой за параметр. Post_max_vars указывает интерпретатору сколько будет обрабатываться строк в запросе, ограничение стоит по умолчанию 200 строк.
Для крупных проектов, особенно реализованных на таких тяжеловесах как Битрикс это довольно мало.
Поэтому, если вы столкнулись с проблемой, когда при сохранении данных вы получается обрезанный массив или массив в котором только часть передаваемых строк, значит вам нужно не искать ошибку в вашем скрипте, а менять параметры на сервере. Если такой возможности нет, значит надо переделывать скрипт так, что бы он не превышал лимитов.

max_input_vars = 2000

Сколько входных переменных может быть принято в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_ и $_COOKIE отдельно). Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, и все последующие переменные в запросе игнорируются. Это ограничение применяется к каждому уровню вложенности входного многомерного массива.
Ограничение стоит по умолчанию 200 строк.

Поменяем в php.ini.
Параметр post_max_size уже там указан, и достаточно найти его поиском и поменять, тогда как придется дописать, например под post_max_size, с max_input_vars мы поступим таким же образом.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)