- How to Increase File Upload Size in PHP
- Установка лимитов 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
- Директивы upload_max_filesize и post_max_size
- Конфигурационный файл php.ini
- PHP функция ini_set()
- Файл .htaccess
- Ngnix client_max_body_size
How to Increase File Upload Size in PHP
Are you a PHP developer or a system administrator managing servers that host PHP applications? Are you looking for a way to increase or set file upload size in PHP? If yes, then follow this article that shows you how to increase file upload size in PHP and also will explain some of PHP’s core directives for handling file uploads as well as POST data.
By default, PHP file upload size is set to maximum 2MB file on the server, but you can increase or decrease the maximum size of file upload using the PHP configuration file ( php.ini ), this file can be found in different locations on different Linux distributions.
# vim /etc/php.ini [On Cent/RHEL/Fedora] # vim /etc/php/7.0/apache2/php.ini [On Debian/Ubuntu]
To increaes file upload size in PHP, you need to modify the upload_max_filesize and post_max_size variable’s in your php.ini file.
upload_max_filesize = 10M post_max_size = 10M
In addition, you can also set the maximum number of files allowed to be uploaded simultaneously, in a single request, using the max_file_uploads . Note that from PHP 5.3.4 and laster versions, any upload fields left blank on submission do not count towards this limit.
The variable post_max_size which is used to set the maximum size of POST data that PHP will accept. Setting a value of 0 disables the limit. If POST data reading is disabled via enable_post_data_reading, then it is ignored.
Once you have made the above changes, save the modified php.ini file and restart the web server using following commands on your respective Linux distributions.
--------------- SystemD --------------- # systemctl restart nginx # systemctl restart httpd # systemctl restart apache2 --------------- Sys Vinit --------------- # service nginx restart # service httpd restart # service apache2 restart
Thats It! In this short article, we have explained how to increase the file upload size in PHP. If you know any other way or have any questions do share with us using our comment section below.
Установка лимитов 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. Как правило после вывода этой ошибки в браузере, скрипт будет еще какое-то время работать.
Как увеличить максимальный размер загружаемых файлов PHP
Если вы столкнулись с тем, что при загрузке файла большого размера через PHP у вас не получается его загрузить и форма сбрасывает отправку, то это говорит о том, что настройки сервера, где расположен сайт, позволяют загружать файлы только до установленного размера. Но это не беда, ведь данный лимит можно увеличить.
Лимит на загрузку может быть установлен в нескольких местах с помощью специальных директив.
Директивы upload_max_filesize и post_max_size
Директива upload_max_filesize определяет максимальный размер загружаемых файлов на сервер.
Директива post_max_size определяет максимальный размер POST запросов при отправке файлов с форм. Его значение должно быть больше или равно максимальному размеру загружаемых файлов.
Конфигурационный файл php.ini
Если у вас есть доступ к файлу php.ini на сервере где расположен сайт, то можно изменить значения upload_max_filesize и post_max_size
PHP функция ini_set()
Ограничение на уровне сайта или веб-приложения обычно дается в файлах php путем изменения директив upload_max_filesize и post_max_size через функцию ini_set():
ini_set('upload_max_size','30M'); ini_set('post_max_size','30M');
Файл .htaccess
Если вы используете веб-сервер Apache, то можете через файл .htaccess увеличить значения upload_max_filesize и post_max_size:
php_value upload_max_filesize 30M php_value post_max_size 30M
Ngnix client_max_body_size
В веб-сервере Ngnix есть также директива client_max_body_size, которая отвечает за максимальный размер данных передаваемых в HTTP запросах и влияет на максимальный размер загружаемых файлов. При загрузке файла большого размера сервер может выдать ошибку: 413 Request Entity Too Large, которая будет означать, что клиент отправил слишком большой запрос на сервер и пора повышать лимит.