- Установка лимитов PHP на обработку данных из форм
- Описание директив
- post_max_size
- Пример в htaccess:
- upload_max_filesize
- Пример:
- max_input_vars
- Пример:
- max_execution_time
- Пример:
- max_input_time
- Пример:
- memory_limit
- Пример:
- Установка директив в .htaccess
- Установка директив в PHP-скрипте
- Получение значений в PHP-скрипте
- Получение значения upload_max_filesize в PHP:
- Результат:
- Возможные ошибки
Установка лимитов 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
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) .
Получение значения 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. Как правило после вывода этой ошибки в браузере, скрипт будет еще какое-то время работать.