#php #upload #filesize
#php #загрузка #размер файла
Вопрос:
На моем хосте сайта я видел (через phpinfo), что
- post_max_size = 8 МБ
- upload_max_filesize = 16 МБ
Это привело меня к мысли, что я должен иметь возможность загружать как файл размером до 16 МБ. Однако, когда я делаю это с помощью метода post (как обычно), post_max_size берет верх и объявляет, что я отправил слишком много.
Какой метод позволяет отправлять файл размером до 16 МБ? ПОЛУЧИТЬ — ПОМЕСТИТЬ — другое ?
Надеюсь, кто-нибудь сможет прояснить это для меня.
Саймон
Ответ №1:
upload_max_filesize
является пределом любого отдельного файла. post_max_size
это предел всего тела запроса, который может включать несколько файлов.
Учитывая post_max_size = 20M
, upload_max_filesize = 6M
что вы можете загружать до 3 файлов по 6 м каждый. Если вместо post_max_size = 6M
этого и upload_max_filesize = 20M
затем вы могли бы загрузить только один файл размером 6 миллионов, прежде чем нажимать post_max_size. Это не помогает иметь upload_max_size
> post_max_size
.
Не очевидно, как распознать переход post_max_size
. $_POST
и $_FILES
будет пустым, но $_SERVER['CONTENT_LENGTH']
будет> 0. Если клиент просто не загружал никаких переменных post или файлов, тогда $_SERVER['CONTENT_LENGTH']
будет 0.
Ответ №2:
По почте выполняется загрузка файлов (обычно есть и другие методы). Посмотрите на атрибут метода формы, который содержит поле для загрузки файла 😉
Нижний предел любого связанного параметра заменяет более высокий параметр:
См. раздел Обработка загрузки файлов: общие ошибки, в котором это подробно объясняется и как вычислять значения.
Ответ №3:
Обычный способ отправки загружаемого файла — POST, поэтому его размер также post_max_size
должен составлять 16 Мб или более.
Кстати, тоже memory_limit
играет роль. Он должен быть больше 16 МБ, но поскольку значение по умолчанию равно 128 МБ, вы не увидите этой проблемы. Пример php.ini
конфигурации:
post_max_size = 16M
upload_max_filesize = 16M
memory_limit = 128M
Измените эти значения, php.ini
если у вас есть к ним доступ, в противном случае вы можете попытаться изменить их в .htaccess
файле.
php_value upload_max_filesize 16M
php_value post_max_size 16M
Это будет работать, только если AllowOverride
это разрешено настройками. В противном случае вы должны обратиться к своей хостинговой компании.
Ответ №4:
post_max_size:
- Задает максимальный допустимый размер данных post. Этот параметр также влияет на загрузку файлов
- Для загрузки больших файлов это значение должно быть больше, чем upload_max_filesize
- Вообще говоря, memory_limit должен быть больше, чем post_max_size .
- PHP по умолчанию: 8M
upload_max_filesize:
- Максимальный размер загруженного файла
- PHP по умолчанию: 2M
memory_limit > post_max_size > upload_max_filesize
PHP по умолчанию: 128M> 8M> 2M
По умолчанию post_max_size должно быть в 4 раза больше, чем upload_max_filesize .
В свою очередь memory_limit должен быть в 16 раз больше, чем post_max_size
Ответ №5:
Настройки конфигурации вашего сервера позволяют пользователям загружать файлы размером до 16 МБ (поскольку вы установили upload_max_filesize = 16 МБ), но post_max_size принимает post-данные размером до 8 МБ. Вот почему он выдает ошибку.
Цитируется с официального сайта PHP:
Для загрузки больших файлов значение post_max_size должно быть больше, чем upload_max_filesize .
memory_limit должен быть больше, чем post_max_size
Вы всегда должны устанавливать значение post_max_size больше, чем значение upload_max_filesize .
Ответ №6:
изменение в php.ini max_input_vars 1000
Комментарии:
1. Это не соответствующий ответ на вопрос. max_input_vars задает, сколько входных переменных может быть принято, а не общий размер их значений.