底线:
我是否需要关注设置post_max_filesize
>> memory_limit
?
详细信息:
这个答案表明上传的文件不需要适合php的memory_limit.在PHP的文档表明,整个后应该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
通过这些配置,我希望能够:
将10x100mb文件上传到服务器A,
和100x10mb文件服务器乙.
我也希望如此:
使用上传到服务器A的10个文件中的任何一个都是一个问题(50M包中的100M文件......).
使用上传到服务器B的100个文件中的任何一个都可以(10 <50).
在尝试较少但又等效相关的数字时,我发现这些期望是正确的.
这种经历会让我说"通常memory_limit应该大于upload_max_filesize
"; 相反,php 文档说:
一般来说,memory_limit应该大于
post_max_size
.
如果不是,为什么会发生什么?
当我的PHP代码被执行时,我看不到所有发布的文件都在内存中的证据.在我看来,我所拥有的只是一个$ _FILES路径,这些路径只能在磁盘上找到文件.在我能够反省环境之前,php是否会在内存中保留整个帖子?我需要关注设置post_max_filesize
>> memory_limit
吗?
除此之外:
违反手册的规则不会导致严重损坏的服务器(w/php5.3 apache2.2 debian 6).
PHP将接受单独小于upload_max_filesize
并且一起占用少于post_max_size
字节的上载文件.PHP文档是错误的,memory_limit
不需要保存发布的文件内容.
以下配置适用于Apache2模块和CGI,并接受小于1G的文件.
upload_max_filesize = 1G post_max_size = 1G memory_limit = 32M