php与x2019之间的关系;s内存限制、上载最大文件大小和发布最大文件大小
底线:php与x2019之间的关系;s内存限制、上载最大文件大小和发布最大文件大小,php,apache,configuration,file-upload,Php,Apache,Configuration,File Upload,底线: 我是否需要关注设置post\u max\u filesize>>内存限制 详细信息: 建议上传的文件不需要符合php的内存限制。建议整个帖子应该在php的内存限制内 我发现这些文件令人惊讶,我希望有人能详细说明。例如,以以下php配置为例: ; config A memory_limit = 50M upload_max_filesize = 100M post_max_filesize = 1000M max_file_uploads = 10 及 通过这些配置,我希望能够:
我是否需要关注设置
post\u max\u filesize
>>内存限制
详细信息:建议上传的文件不需要符合php的内存限制。建议整个帖子应该在php的内存限制内 我发现这些文件令人惊讶,我希望有人能详细说明。例如,以以下php配置为例:
; config A
memory_limit = 50M
upload_max_filesize = 100M
post_max_filesize = 1000M
max_file_uploads = 10
及
通过这些配置,我希望能够:
- 将10x100mb的文件上载到服务器A,
- 并将100x100MB的文件上载到服务器B。
- 处理上载到服务器A的10个文件中的任何一个都是一个问题(50米包中有100毫秒的文件…。
- 处理上载到服务器B的100个文件中的任何一个都可以(10<50).
- 我还认为:
post\u max\u size
为什么?如果不是,会发生什么
当我的php代码被执行时,我看不到任何证据表明所有发布的文件都在内存中。在我看来,我所拥有的只是一个$\u FILES数组,其中包含指向磁盘上专用文件的路径。在我能够反思环境之前,php是否在内存中占据了全部位置?我是否需要关注设置post\u max\u filesize
>>内存限制
旁白:违反手册规则不会导致服务器严重损坏(w/php5.3 apache2.2 debian 6) 我需要担心吗 设置post_max_filesize>> 内存限制
只有当您计划将整个文件读入内存,并且您读入的文件大于分配给PHP的空间时(即
内存限制
),在这种情况下,您的内存将耗尽。我个人的经验是,您必须有一个高于post\u max\u大小的内存限制并上载\u max\u大小
post_max_size指的是所有已发布的数据。这包括文件本身可能包含的任何表单字段。upload_max_size是文件在该上载中可允许的最大大小
比如说。如果post_max_大小为10mb,upload_max_大小为1mb,您可以上载9个文件,每个文件大小为1mb,为什么是9个文件?因为POST数据的一部分是文件元数据-文件名、mimetype、文件大小等。。。所有这些都会占用一些空间,因此9个文件实际上会占用9.01MB左右的空间。剩下的0.99对于另一个文件来说太小了,所以你不能上传第10个文件,即使它符合上传最大大小限制
至于内存限制,您不仅需要为上传的文件留出足够的“空间”,还必须记住,此限制适用于整个脚本。10mb的内存限制只允许上传9MB的文件,因为PHP本身以及所有相关的代码和库已经占用(比如)1MB的空间
即使这些文件没有保存在内存中,它们也会尽快转储到临时文件中,并通过STDIN从Apache传递到PHP。PHP必须从该流中读取文件,并将它们复制到$\u文件数组的['tmp\u name']
部分中使用的临时文件中
无论出于何种原因,PHP似乎基本上是在执行“file_get_contents()”并将文件批量存储,而不是执行流式复制。因此需要超过允许的最大文件大小的内存限制。PHP将接受单独小于
upload\u max\u filesize
且总共小于post\u max\u size
字节的上传文件。PHP文档在内存限制方面是错误的,它不需要保存文件内容
以下配置适用于Apache2模块和CGI,并接受小于1G的文件
upload_max_filesize = 1G
post_max_size = 1G
memory_limit = 32M
我认为这个建议源于这样一个事实:如果您尝试对所有文件(例如存储到变量)进行任何处理,那么您将超过PHP的内存限制。不过,我不确定,所以我不会把这当作一个真正的答案。上传的文件不在POST系统中,也不在_文件系统中,php不会提供这些文件的全部内容。上传时,您必须将其重新加载,因此“仅当您计划将整个文件读取到内存中时”这似乎大致支持了我的建议,即文件大小而不是文章大小应该是相关的。您是否愿意承认文档是错误的,post大小和内存限制实际上只与用例和从/tmp读取的最大发布文件的大小有关?尽管我的设置在真空情况下有点像球形鸡,但这是有意的,以避免对字段大小的切题讨论,上传时间等。你能提供关于php行为的更多细节,并解释我是如何拥有一个明显与你的断言相矛盾的工作系统的吗?
upload_max_filesize = 1G
post_max_size = 1G
memory_limit = 32M