Взаимосвязь между memory_limit, upload_max_filesize и post_max_filesize в php

Итог :
Нужно ли мне беспокоиться о настройке post_max_filesize >> memory_limit ?

Подробности :
Этот ответ предполагает, что загруженные файлы не должны соответствовать в пределах php memory_limit. php docs предполагают, что весь пост должен умещаться в пределах лимита памяти php.

Документы меня удивляют, и я надеюсь, что кто-нибудь сможет их уточнить. Например, возьмем следующие конфигурации php:

; config A
memory_limit = 50M
upload_max_filesize = 100M
post_max_filesize = 1000M
max_file_uploads = 10    

и

; config B
memory_limit = 50M
upload_max_filesize = 10M
post_max_filesize = 1000M
max_file_uploads = 100    

С этими конфигурациями я ожидаю, что смогу:

  • загрузить файлы размером 10x100 МБ на сервер A ,
  • и файлы размером 100x10 МБ на сервер B .

Я также ожидаю, что:

  • Работа с любым из 10 файлов загружены на сервер A представляет собой проблему (100 МБ файла в пакете 50 МБ…).
  • Работать с одним из 100 файлов, загруженных на сервер B , нормально ( 10

Экспериментируя с менее округлыми, но равнозначно связанными числами, я обнаружил, что эти ожидания верны.

Этот опыт заставил меня сказать, что «обычно memory_limit должен быть больше, чем upload_max_filesize »; вместо этого php docs говорят:

вообще говоря, memory_limit должен быть больше, чем post_max_size .

Почему и что происходит, если это не так?

Когда мой php-код выполняется, я не вижу свидетельств того, что все отправленные файлы находятся в памяти. Мне кажется, что все, что у меня есть, это массив $ _FILES путей к файлам, находящимся исключительно на диске. Сохраняет ли php весь пост в памяти в какой-то момент до того, как я смогу исследовать окружающую среду? Нужно ли мне беспокоиться об установке post_max_filesize >> memory_limit ?

В сторону:
Нарушение правил руководства не приводит к серьезной поломке сервера (w / php5. 3 apache2. 2 дебиан 6).

14
задан Community 23 May 2017 в 11:46
поделиться