我在seeing this recent SuperUser question on the role memory_limit
plays in file upload limits之后在此发布问题。
PHP官方手册在post_max_size
下声明了以下内容
通常来说,
memory_limit
应该大于post_max_size
。
如果您从某种程度上理解PHP,并且memory_limit
与post_max_size
是什么,那么此官方建议完全没有任何意义。 memory_limit
是与PHP进程内存限制有关的设置,而post_max_size
仅与通过PHP上传到文件系统的项目的最大大小有关。
现在,可以将大型POST发布到PHP脚本并将其存储在PHP内存中。但是几乎没有人这样做。将绝大多数文件发布到PHP脚本后,该文件将通过PHP进行流传输并保存到文件系统中。
那为什么要给出这种“一般来说……”的建议呢?还是经过20多年的PHP开发,我完全摆脱了束缚,并且以某种方式能够将大型文件上传到LAMP堆栈应用程序,而memory_limit
却没有超过post_max_size
?
如果找到了a similar question here和this answer以及as this other answer,也证实了我的意思。然后,here is another answer to another question触及了明确回答“不”的话题。
那么为什么官方的PHP手册说明memory_limit
与post_max_size
有什么关系?
是的,我知道在某些情况下,这种“一般而言……”建议是有效的,但是我发现它使多少在线资源(见上文)与PHP手册。也许应该针对不同的使用情况提出更具体的“一般性”建议?
答案 0 :(得分:2)
因为如果使用$_POST
数组,则需要将其存储在内存中,特别是对于大型POST
数据。因此,它需要放入内存中。
您还可以使用流包装器php://input
代替$_POST
来减少内存使用。