PHP post_max_size vs upload_max_filesize,有什么区别?

Ton*_*y M 17 php

当尝试PDF通过为此创建的管理区域上传15mb 的文件时,没有任何反应.没有成功或错误消息,但PDF没有上传.

然后我认为这可能是php.ini设置的问题.果然,当我查看文件时,我发现限制设置为8米.我假设的意思是8mb.

post_max_size: http ://php.net/post-max-size

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
post_max_size = 20M
Run Code Online (Sandbox Code Playgroud)

upload_max_filesize: http ://php.net/upload-max-filesize

; Maximum allowed size for uploaded files.
upload_max_filesize = 20M
Run Code Online (Sandbox Code Playgroud)

看一下评论,似乎有一个用于上传文件,而另一个用于直接与POST数据相关.令我困惑的是这种情况:如果你有一个表单POST将图像发送到另一个页面,那么它算什么,upload_max_filesize或者post_max_size?它属于两者吗?一个优先吗?是否存在使用一个而不是另一个的情况?

编辑:

因此,如果我有一个包含3个文件输入的表单,所有允许20mb或更小的文件,则必须设置如下设置:

upload_max_filesize = 20M
post_max_size = 60M
Run Code Online (Sandbox Code Playgroud)

Bra*_*rad 30

你是对的. post_max_size是所有POST正文数据的最大大小.如果您正在发布JSON或DVD集合并不重要,这就是所有POST正文数据.您的文件上传计入此限制.您还应该知道,如果要上载多个文件,则文件总大小必须符合此限制.

upload_max_filesize是仅适用于POST的文件的最大大小.其他类型的POST正文数据不受此限制.

简而言之,如果要上传大文件,则必须增加两个限制.

  • 因此,根据我的理解,如果我有一个具有 3 个上传且上限为 20MB 的表单,那么“upload_max_filesize = 20M”就可以了,但“post_max_size”必须设置为“60M”? (3认同)
  • @Brad但是带有文件的帖子比文件本身大(由于 mime 分隔符、其他参数等),因此 3 个文件,每个文件 20 MB,上传后它们的总大小 = 60MB +“一些来自其他参数,mime 编码”...对吗? (2认同)

Neo*_*Neo 5

post_max_size就像超集。upload_max_filesize在文件上传的上下文中,但是检查post_max_size是否包含所有类型的POST数据。它可能是一个很大的内容,可以发布,并且受post_max_size限制。因此,对于要上传的大文件,您需要同时更改两个限制。

  • 来自`post_max_size`的文档:*`“设置允许的发布数据的最大大小。此设置也会影响文件上传。要上传大文件,该值必须大于upload_max_filesize。”`* (2认同)