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

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

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
htaccess

upload_max_filesize

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

  • post_max_size должен быть больше этого значения.
  • Значение можно указать числом в байтах, K, M и G.

Пример:

php_value upload_max_filesize 100M
htaccess

max_input_vars

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

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

Пример:

php_value max_input_vars 2000
htaccess

max_execution_time

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

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

Пример:

php_value max_execution_time 600
htaccess

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

max_input_time

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

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

Пример:

php_value max_input_time 600
htaccess

memory_limit

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

  • memory_limit должен превышать post_max_size.
  • Чтобы убрать ограничения, установите значение «-1».

Пример:

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         
htaccess
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).

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

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

Результат:

Максимальный размер данных: 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. Как правило после вывода этой ошибки в браузере, скрипт будет еще какое-то время работать.

10.02.2022, обновлено 21.03.2022
901

Комментарии

, чтобы добавить комментарий.

Другие публикации

Примеры использования cURL в PHP
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
134167
+20
Время и память выполнения скрипта PHP
Несколько методов как узнать время генерации страницы и затраченный объем памяти PHP скрипта.
7692
+2
Очистка данных из форм в PHP
Для предотвращения XSS, SQL-инъекций и других атак, данные полученные из форм нужно чистить. Простое экранирования кавычек не достаточно, нужен комплексный подход по типу данных.
7514
+4
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
93005
+38
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
8424
+1
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
17793
+8