PHP post_max_size vs upload_max_filesize, в чем разница?

При попытке загрузить файл PDF, который был 15mb через созданную для этого область администрирования, ничего не произошло. Не было никакого сообщения об ошибке или ошибке, но PDF не загружался.

Тогда я подумал, что это может быть проблемой с настройками php.ini. Разумеется, когда я посмотрел файл, я обнаружил, что ограничения установлены на 8 м. Я предполагаю, что это 8mb.

post_max_size: http://php.net/post-max-size

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
post_max_size = 20M

upload_max_filesize: http://php.net/upload-max-filesize

; Maximum allowed size for uploaded files.
upload_max_filesize = 20M

При взгляде на комментарии кажется, что один для загружаемых файлов, а другой относится непосредственно к данным POST. То, что меня смущает, это такой сценарий: если у вас есть форма POST 'с изображением на другую страницу, что это значит, upload_max_filesize или post_max_size? Подходит ли он под оба? Имеет ли место приоритет? Существуют ли случаи, когда один будет использоваться, а не другой?

Edit:

Итак, если у меня есть форма, содержащая 3 входа файлов, все разрешающие файлы размером 20 МБ или меньше, настройки должны быть установлены следующим образом:

upload_max_filesize = 20M
post_max_size = 60M

Ответ 1

Вы правы. post_max_size - максимальный размер для всех данных тела POST. Не имеет значения, используете ли вы POSTING JSON или свою коллекцию DVD, это все данные тела POST. Загрузка вашего файла соответствует этому пределу. Вы также должны знать, что если вы загружаете несколько файлов, общий размер файла должен соответствовать этому пределу.

upload_max_filesize - максимальный размер только для файлов POSTED. Другие типы данных тела POST не подпадают под этот предел.

Короче говоря, если вы хотите загружать большие файлы, вы должны увеличить оба ограничения.

Ответ 2

post_max_size похоже на надмножество. upload_max_filesize находится в контексте с загрузкой файлов, но post_max_size проверяется на все виды данных POST. Это может быть очень большой контент, который может быть опубликован, который ограничен post_max_size. Поэтому для большого файла, который вы хотите загрузить, вам нужно изменить оба предела.