【发布时间】:2011-07-03 16:10:50
【问题描述】:
底线:
我需要关心设置post_max_filesize >> memory_limit吗?
详情:
This answer 建议上传的文件不需要符合 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
通过这些配置,我希望能够:
- 将 10x100mb 文件上传到服务器 A,
- 和 100x10mb 文件上传到服务器 B。
- 处理上传到服务器 A 的 10 个文件中的任何一个都是一个问题(50M 包中的 100Ms 文件......)。
- 使用上传到服务器 B 的 100 个文件中的任何一个都可以 (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 debian 6)。
【问题讨论】:
-
我认为该建议源于这样一个事实,即如果您尝试对所有文件进行任何处理(例如存储到变量),那么您将超过 PHP 的内存限制。不过不确定,所以我不会把它作为一个真正的答案。
标签: php apache configuration file-upload