PHP post_max_size переопределяет upload_max_filesize
В моем хосте сайта я видел (через phpinfo), что
- post_max_size = 8Mb
- upload_max_filesize = 16Mb
Это заставило меня подумать, что я могу загрузить файл размером до 16 МБ.
Однако, когда я делаю это с помощью почтового метода (как обычно), post_max_size принимает и объявляет, что я отправил слишком много.
Каков метод, позволяющий отправлять файл размером до 16 Мб?
GET - PUT - другое?
Надеюсь, кто-то может это разъяснить для меня.
Саймон
Ответы
Ответ 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:
Для загрузки больших файлов значение post_max_size должно быть больше, чем upload_max_filesize.
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