PHP post_max_size会覆盖upload_max_filesize

Sim*_*mon 43 php upload filesize

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

  • post_max_size = 8Mb
  • upload_max_filesize = 16Mb

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

允许发送大到16Mb的文件的方法是什么?GET - PUT - 其他?

希望有人能为我澄清一下.

西蒙

Mat*_*hew 82

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

鉴于post_max_size = 20M并且upload_max_filesize = 6M您可以上传最多3个文件,每个文件6M.如果相反post_max_size = 6M,upload_max_filesize = 20M那么在点击post_max_size之前你只能上传一个6M文件.拥有upload_max_size> 没有帮助post_max_size.

如何认识到过去并不明显post_max_size.$_POST并且$_FILES将为空,但$_SERVER['CONTENT_LENGTH']将> 0.如果客户端只是没有上传任何后期变量或文件,那么$_SERVER['CONTENT_LENGTH']将为0.


hak*_*kre 19

通过POST文件上传完成(通常还有其他方法).查看包含文件上传字段的表单的method属性;)

任何相关设置的最低限制都会取代更高的设置:

请参阅处理文件上传:公共Pitfals详细解释了这一点以及如何计算值.


sti*_*vlo 12

发送文件上传的常规方法是POST,因此也post_max_size应该是16 Mb或更多.

顺便说一句,也memory_limit起到了作用.它应该大于16Mb,但由于默认值为128Mb,您将看不到此问题.php.ini配置示例:

post_max_size = 16M
upload_max_filesize = 16M
memory_limit = 128M
Run Code Online (Sandbox Code Playgroud)

php.ini如果您可以访问它,请更改这些值,否则您可以尝试在.htaccess文件中更改它们.

php_value upload_max_filesize 16M
php_value post_max_size 16M 
Run Code Online (Sandbox Code Playgroud)

这仅在AllowOverride设置允许时才有效.否则,你要问你的托管公司.


Nɪs*_*ʜ ॐ 8

的post_max_size:

  • 设置允许的发布数据的最大大小.此设置也会影响文件上载
  • 要上传大文件,此值必须大于upload_max_filesize
  • 一般来说,memory_limit应该大于post_max_size.
  • PHP默认值:8M

的upload_max_filesize:

  • 上传文件的最大大小
  • PHP默认值:2M

memory_limit> post_max_size> upload_max_filesize

PHP默认值:128M> 8M> 2M

默认情况下,post_max_size应该是upload_max_filesize的4倍.
反过来,memory_limit应该比post_max_size大16倍


Sai*_*ada 6

您的服务器配置设置允许用户上传最大16MB的文件(因为您设置了upload_max_filesize = 16Mb),但post_max_size仅接受高达8MB的发布数据.这就是它抛出错误的原因.

引用官方PHP网站:

  1. 要上传大文件,post_max_size值必须大于upload_max_filesize.

  2. memory_limit应大于post_max_size

您应始终将post_max_size值设置为大于upload_max_filesize值.