首页 > 解决方案 > 为什么 PHP 官方手册错误地指出,“一般来说,'memory_limit' 应该大于 'post_max_size'?”

问题描述

我在看到这个最近的超级用户关于memory_limit文件上传限制中的角色扮演的问题后,在这里发布了这个问题。

PHP 官方手册在下面声明如下post_max_size

一般来说,memory_limit应该大于post_max_size

如果您在某种程度上了解 PHP,那么memory_limitpost_max_size这个官方建议相比,什么是完全没有意义的。memory_limit是一个与 PHP 进程内存限制有关的设置,post_max_size仅与通过 PHP 上传到文件系统的项目的最大大小有关。

现在被授予,可以将大数据发布到 PHP 脚本并将其存储在 PHP 内存中。但几乎没有人这样做。当绝大多数文件被 POST 到 PHP 脚本时,该文件通过 PHP 流式传输并保存到文件系统。

那么为什么会给出这个“一般来说……”的建议呢?或者,经过 20 多年的 PHP 开发,我是否完全摆脱了我的摇滚乐,并且不知何故我能够将大文件上传到 LAMP 堆栈应用程序而没有memory_limit超过post_max_size

如果在此处找到类似的问题,并且此答案以及其他答案可以证实我的意思。哎呀,这是另一个问题的另一个答案,涉及到答案明确指出“不”的主题。</p>

那么为什么与官方的 PHP 手册说明memory_limit有任何关系post_max_size呢?

是的,我知道在某些情况下这个“一般来说……”的建议是有效的,但我发现有多少在线资源(见上文)与 PHP 手册中的内容相矛盾。也许应该针对不同的用例制定更具体的“一般”建议?

标签: phplamp

解决方案


Because if you use the $_POST array it needs to be stored inside the memory, especially for large POST data. Therefore it needs to fit into memory.

You also could use the stream wrapper php://input to reduce memory usage instead of $_POST.


推荐阅读