Eri*_*c F 3 apache-http-server php
据我了解,当使用 Apache 和 PGP 托管网络服务器时php.ini
,决定最大上传大小的三个设置是:
memory_limit
post_max_size
upload_max_filesize
正如我所读到的,memory_limit
必须大于post_max_size
并且post_max_size
必须大于upload_max_filesize
。从那里开始,upload_max_filesize
在 Apache 设置中,最低的实际上是上传大小的真正限制。
那么,如果上述情况属实,那么是否可以通过与 Apache 一起运行的 PHP 上传到网络服务器的真正最大文件大小等于托管设备上的物理内存?除了磁盘写入限制,即 NTFS 如何将文件大小限制为每个文件 4GB?
我问这个的原因是我的post_max_size
并且upload_max_filesize
设置为 4096M 但是虽然文件略小于 1GB 上传没有问题但超过 1GB 的文件没有。那么memory_limit
在这样的事情中会是一个促成因素吗?
你问:
那么,如果上述情况属实,那么是否可以通过与 Apache 一起运行的 PHP 上传到网络服务器的真正最大文件大小等于托管设备上的物理内存?
不。您正确地解释了有关memory_limit
这方面的错误建议,这会让您认为实际情况memory_limit
与文件上传大小几乎没有关系。memory_limit
纯粹是关于 PHP 进程内存,与文件传输进程无关。
这就是为什么……
使用 PHP 和 Apache 上传文件时唯一需要关注的两个项目是:
post_max_size
:设置允许的帖子数据的最大大小。此设置也会影响文件上传。要上传大文件,此值必须大于upload_max_filesize
。一般来说,memory_limit
应该大于post_max_size
。upload_max_filesize
: 上传文件的最大大小。memory_limit
在这种设置中与文件传输完全无关。所有memory_limit
做的是控制每个PHP的过程多少内存获取如果是内部处理的东西。我的文件传输与memory_limit
.
memory_limit
:这设置了允许脚本分配的最大内存量(以字节为单位)。这有助于防止编写不当的脚本来耗尽服务器上的所有可用内存。请注意,要没有内存限制,请将此指令设置为 -1。也就是说,PHP 手册(如上所述)说:
一般来说,
memory_limit
应该大于post_max_size
。
这是没有意义的,如果你仔细想想,就会被认为是一个错误。memory_limit
是对 RAM 中 PHP 进程可以处理多少数据的限制。但是——正如我之前所说的——文件传输是一个流数据过程,PHP 在 RAM 中存储文件内容的时间不会超过将其写入文件系统之前所需的时间。
这个 Stack Overflow 的回答说明了很多。而这个对方的回答解释了它更雄辩和简洁:
仅当您计划将整个文件读入内存并且您读入的文件大于您分配给 PHP 的空间时(即
memory_limit
),在这种情况下您将耗尽内存。
归档时间: |
|
查看次数: |
2445 次 |
最近记录: |