PHP - максимальный общий размер загрузки?
У меня есть веб-страница php с 15 полями. Пользователь будет использовать его для загрузки изображений. Я проверил это, загрузив 15 изображений jpg, каждое около 2 м, без каких-либо проблем. В день запуска я буду перемещать эту веб-страницу в другую среду общего хостинга Linux (до сих пор не знаю, в какую). Существуют ли некоторые среды веб-хостинга, которые ограничивают размер общей загрузки в одном http-запросе?
9 ответов:
Да. Есть (насколько я помню) три или около того настройки конфигурации, которые будут влиять на ограничения размера загрузки:
upload_max_filesize
, который устанавливает верхний предел размера загружаемых файловpost_max_size
, что ограничивает общий размер опубликованных данных, включая файловые данныеmax_input_time
, что ограничивает время, в течение которого скрипту разрешено обрабатывать входные данные, включая опубликованные значения
upload_max_filesize
Есть ли ограничение на каждый однакоmax_post_size
является верхним пределом для всего запроса, который включает все загруженные файлы.В разных средах размещения эти значения будут установлены по-разному, что может повлиять на ваши возможности при развертывании.
Ограничения на загрузку устанавливаются через php ini. Вы можете попробовать получить их так:
$post_max_size = ini_get('post_max_size'); $upload_max_filesize = ini_get('upload_max_filesize');
Это настройка в php.ини. Вы можете посмотреть в выводе php info поле с надписью "upload_max_filesize". Чтобы получить страницу PHP info, создайте файл php со следующим кодом:
<?php phpinfo(); ?>
Этот пост на php.net дает вам пример кода, чтобы получить эту информацию, а остальная часть страницы является сокровищницей параметров конфигурации php.
Есть куча настроек PHP, ограничивающих процесс загрузки:
- file_uploads
- upload_max_filesize
- max_input_time
- memory_limit
- max_execution_time
- post_max_size
Я бы предложил прочитать эту страницу: http://www.radinks.com/upload/config.php
Хотя это правда, что многие из них не ограничивают размер загрузки, они накладывают ограничение на процесс загрузки - например, если лимит памяти слишком мал, то у вас будут проблемы загрузка больших файлов, которые должны оставаться в памяти в течение небольшого периода времени.
Это было бы необычно, но, конечно, свяжитесь с любой хостинговой компанией, которую вы выберете. Если бы существовал лимит, то он наверняка был бы выше 30 МБ.
Php.директива ini "post_max_size" должна ограничивать количество данных, которые вы можете отправить в одном сообщении. если вы разместите 15 изображений в одном посте, я уверен, что это все еще считается одним постом. Поэтому было бы неплохо проверить это значение, прежде чем выходить в эфир.
Если вы используете nginx, то убедитесь, что у вас есть следующее:
server { ... client_max_body_size 100M; .... }
Здесь:
max_execution_time max_input_time memory_limit post_max_size upload_max_filesize max_file_uploads
Я видел лучшее решение здесь до сих пор, и это код:
/** * Returns the maximally uploadable file size in megabytes * * @return string */ function getMaxUploadSize() { $max_upload = (int)(ini_get('upload_max_filesize')); $max_post = (int)(ini_get('post_max_size')); $memory_limit = (int)(ini_get('memory_limit')); return min($max_upload, $max_post, $memory_limit); }