为什么 PHP 官方手册错误地指出“一般来说,'memory_limit' 应该大于 'post_max_size'?”
Why does the official PHP manual incorrectly state, “Generally speaking, 'memory_limit' should be larger than 'post_max_size'?”
我在 seeing this recent SuperUser question on the role memory_limit
plays in file upload limits 之后在这里发布这个问题。
官方 PHP 手册在 post_max_size
下说明如下
Generally speaking, memory_limit
should be larger than post_max_size
.
如果您在某种程度上理解 PHP 以及 memory_limit
与 post_max_size
的区别,那么此官方建议毫无意义。 memory_limit
是一个与 PHP 进程内存限制有关的设置,而 post_max_size
仅与通过 PHP 上传到文件系统的项目的最大大小有关。
现在可以 POST 大到 PHP 脚本并将其存储在 PHP 内存中。但几乎没有人这样做。当绝大多数文件 POST 编辑到 PHP 脚本时,该文件将通过 PHP 流式传输并保存到文件系统。
那么为什么要给出这个“一般来说……”的建议呢?或者,经过 20 多年的 PHP 开发,我是否已经完全失去理智,并且我能够以某种方式将大文件上传到 LAMP 堆栈应用程序,而 memory_limit
不会超过 post_max_size
?
如果发现 a similar question here and this answer as well as this other answer that confirms what I am saying. And heck, here is another answer to another question 涉及到答案明确指出“否”的主题。
那为什么官方PHP手册说memory_limit
和post_max_size
有什么关系呢?
是的,我知道在 一些 情况下,这个“一般来说……”建议是有效的,但我发现它混淆了多少在线资源(见上文)与PHP手册中所说的相矛盾。或许应该针对不同的使用案例制定更具体的“一般”建议?
因为如果你使用 $_POST
数组,它需要存储在内存中,特别是对于大的 POST
数据。因此它需要适合内存。
您也可以使用流包装器 php://input
来减少内存使用,而不是 $_POST
。
我在 seeing this recent SuperUser question on the role memory_limit
plays in file upload limits 之后在这里发布这个问题。
官方 PHP 手册在 post_max_size
Generally speaking,
memory_limit
should be larger thanpost_max_size
.
如果您在某种程度上理解 PHP 以及 memory_limit
与 post_max_size
的区别,那么此官方建议毫无意义。 memory_limit
是一个与 PHP 进程内存限制有关的设置,而 post_max_size
仅与通过 PHP 上传到文件系统的项目的最大大小有关。
现在可以 POST 大到 PHP 脚本并将其存储在 PHP 内存中。但几乎没有人这样做。当绝大多数文件 POST 编辑到 PHP 脚本时,该文件将通过 PHP 流式传输并保存到文件系统。
那么为什么要给出这个“一般来说……”的建议呢?或者,经过 20 多年的 PHP 开发,我是否已经完全失去理智,并且我能够以某种方式将大文件上传到 LAMP 堆栈应用程序,而 memory_limit
不会超过 post_max_size
?
如果发现 a similar question here and this answer as well as this other answer that confirms what I am saying. And heck, here is another answer to another question 涉及到答案明确指出“否”的主题。
那为什么官方PHP手册说memory_limit
和post_max_size
有什么关系呢?
是的,我知道在 一些 情况下,这个“一般来说……”建议是有效的,但我发现它混淆了多少在线资源(见上文)与PHP手册中所说的相矛盾。或许应该针对不同的使用案例制定更具体的“一般”建议?
因为如果你使用 $_POST
数组,它需要存储在内存中,特别是对于大的 POST
数据。因此它需要适合内存。
您也可以使用流包装器 php://input
来减少内存使用,而不是 $_POST
。