php - 为什么 PHP 官方手册错误地指出,“一般来说,'memory_limit' 应该大于 'post_max_size'?”
问题描述
我在看到这个最近的超级用户关于memory_limit
文件上传限制中的角色扮演的问题后,在这里发布了这个问题。
PHP 官方手册在下面声明如下post_max_size
一般来说,
memory_limit
应该大于post_max_size
。
如果您在某种程度上了解 PHP,那么memory_limit
与post_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 手册中的内容相矛盾。也许应该针对不同的用例制定更具体的“一般”建议?
解决方案
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
.
推荐阅读
- laravel - Laravel 导入带有进度条 html 的 excel
- string - 需要时从字符串中删除双引号
- php - 将 LazyLoad 与 Bootstrap Carousel/Swiper 结合使用
- java - 使用多列获取表行索引
- animation - 如何创建或查找模型剥皮权重数据集?
- node.js - node-redis retry_strategy 有默认值吗?
- html - 我得到以下Html,只使用Html Dom,我怎样才能得到ul的壁橱里
- python - “DatabaseOperations”对象没有“geo_db_type”属性。迁移时
- java - 无法重做和撤消为形状(圆形和框)实现的操作以实现设计模式
- grafana - 为什么 Grafana 在某些链接上将 URL 中的子页面加倍?