Подтвердить что ты не робот

PHP post_max_size переопределяет upload_max_filesize

В моем хосте сайта я видел (через phpinfo), что

  • post_max_size = 8Mb
  • upload_max_filesize = 16Mb

Это заставило меня подумать, что я могу загрузить файл размером до 16 МБ. Однако, когда я делаю это с помощью почтового метода (как обычно), post_max_size принимает и объявляет, что я отправил слишком много.

Каков метод, позволяющий отправлять файл размером до 16 Мб? GET - PUT - другое?

Надеюсь, кто-то может это разъяснить для меня.

Саймон

4b9b3361

Ответ 1

upload_max_filesize - это предел любого отдельного файла. post_max_size является пределом всего тела запроса, которое может включать несколько файлов.

Учитывая post_max_size = 20M и upload_max_filesize = 6M, вы можете загрузить до 3 файлов по 6M каждый. Если вместо этого post_max_size = 6M и upload_max_filesize = 20M, вы можете загрузить только один файл 6M, прежде чем нажать post_max_size. Это не помогает иметь upload_max_size> post_max_size.

Непонятно, как распознать переход post_max_size. $_POST и $_FILES будут пустыми, но $_SERVER['CONTENT_LENGTH'] будет> 0. Если клиент просто не загружал никакие переменные или файлы сообщений, тогда $_SERVER['CONTENT_LENGTH'] будет 0.

Ответ 2

По загрузке файлов POST (обычно есть и другие методы). Посмотрите на атрибут метода формы, который содержит поле загрузки файла;)

Нижний предел любой связанной настройки заменяет более высокую настройку:

См. Обработка загрузок файлов: Common Pitfals, которые подробно объясняют это и как рассчитать значения.

Ответ 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

Настройки конфигурации вашего сервера позволяют пользователям загружать файлы размером до 16 МБ (потому что вы установили upload_max_filesize= 16 МБ), но post_max_size принимает данные сообщений только до 8 МБ. Вот почему он выдает ошибку.

Цитируется с официального сайта PHP:

  1. Для загрузки больших файлов значение post_max_size должно быть больше, чем upload_max_filesize.

  2. memory_limit должен быть больше, чем post_max_size

Вы всегда должны устанавливать значение post_max_size больше значения upload_max_filesize.

Ответ 5

post_max_size:

  • Устанавливает максимально допустимый размер почтовых данных. Этот параметр также влияет на загрузку файлов
  • Для загрузки больших файлов это значение должно быть больше, чем 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

Ответ 6

изменение в php.ini max_input_vars 1000