У меня есть веб-страница php с 15 полями. Пользователь будет использовать его для загрузки изображений. Я тестировал это, загружая 15 изображений в формате jpg, каждый около 2 М, без каких-либо проблем. В тот день, когда я начну, я переведу эту веб-страницу в другую среду совместного использования Linux (все еще не уверен, какой). Существуют ли некоторые среды веб-хостинга, которые ограничивают размер общей загрузки в одном HTTP-запросе?
Да. Есть (насколько я помню) три или около того настроек конфигурации, которые будут влиять на ограничения размера загрузки:
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.ini. Вы можете посмотреть в выводе php info для поля с надписью «upload_max_filesize». Чтобы получить информационную страницу php, создайте файл php со следующим кодом:
<?php phpinfo(); ?>
Это сообщение на php.net дает вам образец кода для получения этой информации, а остальная часть страницы – это сокровищница опций конфигурации php.
Есть множество настроек PHP, ограничивающих процесс загрузки:
Я бы предложил прочитать эту страницу: http://www.radinks.com/upload/config.php
Хотя верно, что многие из них не ограничивают размер загрузки, они накладывают ограничения на процесс загрузки – например, если ограничение памяти слишком низкое, тогда у вас возникнут проблемы с загрузкой больших файлов, которые должны оставаться в памяти на небольшой период времени.
Это было бы необычно, но, конечно же, проверьте с какой хостинговой компанией вы выберете. Если бы был предел, он, конечно, был бы выше 30 МБ.
директива php.ini «post_max_size» должна ограничивать количество данных, которые вы можете отправить в одном POST. если вы разместите 15 изображений в одном сообщении, я уверен, что все еще считается одним POST. Поэтому, возможно, было бы хорошо проверить это значение, прежде чем идти вживую.
Если вы используете 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); }