Php размер параметра post

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

Хотел сегодня написать небольшую статью о 2х параметрах которые появились в PHP, это post_max_size и post_max_vars.

post_max_size

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

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.

Источник

Установка лимитов PHP на обработку данных из форм

Перечень настроек PHP, которые могут ограничить отправку форм и файлов через POST-запрос.

Читайте также:  Java net url httpurlconnection

Описание директив

post_max_size

Устанавливает максимальный размер данных, отправленных методом POST, включая размер загружаемых файлов, по умолчанию 8Mb .

  • Для загрузки больших файлов это значение должно быть больше значения upload_max_filesize.
  • Значение можно указать числом в байтах, K (в килобайтах), M (в мегабайтах) и G (в гигабайтах).
  • Значение «0» снимает ограничение только в версиях PHP 5.3.2 и 5.2.12.

Пример в htaccess:

php_value post_max_size 100M

upload_max_filesize

Максимальный размер загружаемых файлов на сервер. По умолчанию 2Mb.

Пример:

php_value upload_max_filesize 100M

max_input_vars

Максимальное количество переменных, которое может быть принято в одном запросе. По умолчанию 1000.

Если данный лимит будет превышен, то после отправки формы массив $_GET или $_POST будет пустым.

Пример:

php_value max_input_vars 2000

max_execution_time

Директива задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, работа скрипта завершается. По умолчанию на загрузку даётся 30 секунд.

Значение «0» снимает ограничение на время выполнения.

Пример:

php_value max_execution_time 600

Также, максимальное время выполнения скрипта задает функция set_time_limit($seconds) .

max_input_time

Задаёт максимальное время в секундах, в течение которого скрипт должен разобрать все входные POST или GET данные. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться.

  • Значение по умолчанию «-1» – будет использоваться max_execution_time.
  • Значение «0» – без ограничений по времени.

Пример:

php_value max_input_time 600

memory_limit

Задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. По умолчанию 128Mb.

Пример:

php_value memory_limit 200M

Установка директив в .htaccess

# Максимальный размер данных php_value post_max_size 110M # Максимальный размер файлов php_value upload_max_filesize 100M # Максимальное количество переменных php_value max_input_vars 2000 # Максимальное время выполнения скрипта php_value max_execution_time 600 # Максимальное время обработки данных php_value max_input_time 600 # Память для скрипта php_value memory_limit 200M 

Установка директив в PHP-скрипте

ini_set('post_max_size', '110M'); // Максимальный размер данных ini_set('upload_max_filesize', '100M'); // Максимальный размер файлов ini_set('max_input_vars', '2000'); // Максимальное количество переменных ini_set('max_execution_time', '600'); // Максимальное время выполнения скрипта ini_set('max_input_time', '600'); // Максимальное время обработки данных ini_set('memory_limit', '200M'); // Память для скрипта

Получение значений в PHP-скрипте

Действующие значения настроек PHP можно посмотреть с помощью функции phpinfo() или получить значение параметра настройки с помощью функции ini_get($option) .

Читайте также:  Https rmsp nalog ru index html

Получение значения upload_max_filesize в PHP:

'; echo 'Максимальный размер файлов: ' . ini_get('upload_max_filesize') . '
'; echo 'Максимальное количество переменных: ' . ini_get('max_input_vars') . '
'; echo 'Максимальное время выполнения скрипта: ' . ini_get('max_execution_time') . '
'; echo 'Максимальное время обработки данных: ' . ini_get('max_input_time') . '
'; echo 'Память для скрипта: ' . ini_get('memory_limit') . '
';

Результат:

Максимальный размер данных: 128M Максимальный размер файлов: 128M Максимальное количество переменных: 10000 Максимальное время выполнения скрипта: 300 Максимальное время обработки данных: -1 Память для скрипта: 1024M

Возможные ошибки

После отправки формы с множеством полей, массив $_POST пустой.
В форме количество полей превышает значение max_input_vars.

Ошибка «Fatal error: Allowed memory size»
Скрипт превысил значение параметра PHP memory_limit.

Ошибка «504 Gateway Time Out»
– Скрипт выполняется слишком долго, нужно увеличить значение max_execution_time. Как правило после вывода этой ошибки в браузере, скрипт будет еще какое-то время работать.

Источник

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

Хотел сегодня написать небольшую статью о 2х параметрах которые появились в PHP, это post_max_size и post_max_vars.

post_max_size

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

post_max_vars

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

Для крупных проектов, особенно реализованных на таких тяжеловесах как Битрикс это довольно мало.

Поэтому, если вы столкнулись с проблемой, когда при сохранении данных вы получается обрезанный POST массив или массив в котором только часть передаваемых строк, значит вам нужно не искать ошибку в вашем скрипте, а менять параметры на сервере. Если такой возможности нет, значит надо переделывать скрипт так, что бы он не превышал лимитов.

Меняем значения post_max_size и post_max_vars

Если у вас в .htaccess разрешено переобъявление php параметров, то можно указать их там, например так:

Читайте также:  Android java working with files

php_value post_max_size 128M
php_value post_max_vars 800

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

Источник

Космонавт в лодкеКосмонавт в лодке

Личный блог Олега Абражаева о программировании, технологиях и о жизни

Язык

Рубрики

  • HTML и CSS (7)
  • Java (2)
  • JavaScript (5)
  • Linux (45)
    • Debian (4)
    • Ubuntu (24)
    • Doctrine (7)
    • Kohana Framework (7)
    • Symfony Framework 2 (3)
    • WordPress CMS (4)
    • Zend Framework 2 (8)
    • Redmine (2)

    Облако меток

    Свежие комментарии

    • PHP: include или все в один файл? — include php быстродействие — Вопросы и ответы по программированию к записи Сравнение производительности автозагрузки и объединения классов в один файл
    • Новичёк к записи Satis: создание вашего собственного Composer репозитория
    • Самарка к записи Что делать с ошибкой W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169
    • Saskozp к записи Фикс Bootstrap 3 Navigation dropdown submenu и реализация в Zend Framework 2 и Smarty
    • seoonly.ru к записи Список полезных команд для Linux (Ubuntu, Debian) – ОБНОВЛЯЕМЫЙ

    livelib.ru

    LiveLib

    Подписаться на обновления!

    Большой размер POST запроса в PHP

    Иногда проект вырастает в нечто большее. Первоначальные POST запросы вырастают в размере, а времени менять архитектуру нет. Вот как можно увеличить размер.

    В первую очередь настройки php.ini. (если апач /etc/php5/apache2/php.ini или если fpm /etc/php5/fpm/php.ini)

    post_max_size равный или больше предполагаемому размеру post.
    upload_max_filesize – для загрузки файлов побольше. обычно равный post.
    max_execution_time и max_input_time побольше, чтобы скрипт не отвалился на долгой загрузке.

    Документация php.ini – http://www.php.net/manual/ru/ini.list.php

    Так же сразу отключить, если установлено расширение php – suhosin. Найти можно по suhosin.so, suhosin.ini.
    Его можно и не отключать, а настроить в suhosin.ini параметры:
    suhosin.post.max_value_length
    suhosin.request.max_value_length

    Документация suhosin – http://www.hardened-php.net/suhosin/configuration.html

    Если используется nginx, то в файле /etc/nginx/nginx.conf:
    client_max_body_size больше предполагаемого post.

    Так же
    send_timeout и fastcgi_read_timeout побольше, иначе будет 504 ошибка.

    Документация nginx – http://nginx.org/ru/

    Если используется apache2, то в /etc/apache2/apache.conf:
    LimitRequestFieldsize – размер поля
    LimitRequestBody – размер всего запроса

    Источник

Оцените статью