PHP post_max_size 覆盖upload_max_filesize

2022-01-09 00:00:00 upload php filesize

在我的网站主机中,我已经看到(通过 phpinfo)

In my site host, I have seen (via phpinfo) that

  • post_max_size = 8Mb
  • upload_max_filesize = 16Mb

这让我想到我应该能够上传最大 16Mb 的文件.但是,当我通过 post 方法(正常)执行此操作时,post_max_size 接管并声明我发送了太多.

This led me to think that I should be able to upload as file as big as 16Mb. However, when I do this through a post method (as normal), post_max_size takes over and declares that I sent too much.

什么方法可以发送16Mb大的文件?GET - PUT - 其他?

What is the method which permits sending a file as big as 16Mb ? GET - PUT - other ?

希望有人可以为我澄清这一点.

Hope someone can clarify this for me.

西蒙

推荐答案

upload_max_filesize 是任何单个文件的限制.post_max_size 是整个请求体的限制,可以包含多个文件.

upload_max_filesize is the limit of any single file. post_max_size is the limit of the entire body of the request, which could include multiple files.

鉴于 post_max_size = 20Mupload_max_filesize = 6M,您最多可以上传 3 个文件,每个文件 6M.如果改为 post_max_size = 6Mupload_max_filesize = 20M 那么您只能在达到 post_max_size 之前上传一个 6M 文件.upload_max_size > post_max_size 没有帮助.

Given post_max_size = 20M and upload_max_filesize = 6M you could upload up to 3 files of 6M each. If instead post_max_size = 6M and upload_max_filesize = 20M then you could only upload one 6M file before hitting post_max_size. It doesn't help to have upload_max_size > post_max_size.

如何识别超过 post_max_size 的方法并不明显.$_POST$_FILES 将为空,但 $_SERVER['CONTENT_LENGTH'] 将 > 0.如果客户端没有上传任何帖子变量或文件,则 $_SERVER['CONTENT_LENGTH'] 将为 0.

It's not obvious how to recognize going over post_max_size. $_POST and $_FILES will be empty, but $_SERVER['CONTENT_LENGTH'] will be > 0. If the client just didn't upload any post variables or files, then $_SERVER['CONTENT_LENGTH'] will be 0.

相关文章