在我的网站主机中,我看到(通过phpinfo)
这让我觉得我应该可以上传大到16Mb的文件。 但是,当我通过post方法(正常)执行此操作时,post_max_size接管并声明我发送的内容过多。
允许发送大至16Mb的文件的方法是什么? GET - PUT - 其他?
希望有人能为我澄清这一点。
西蒙
答案 0 :(得分:78)
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。
答案 1 :(得分:19)
通过POST文件上传完成(通常还有其他方法)。查看包含文件上载字段的表单的method属性;)
任何相关设置的最低限额都会取代更高的设置:
请参阅Handling file uploads: Common Pitfals,其中详细解释了这一点以及如何计算值。
答案 2 :(得分:12)
发送文件上传的常规方法是POST,因此post_max_size
也应该是16 Mb或更多。
顺便说一下,memory_limit
也起作用。它应该大于16Mb,但由于默认值为128Mb,您将看不到此问题。示例php.ini
配置:
post_max_size = 16M
upload_max_filesize = 16M
memory_limit = 128M
如果您可以访问php.ini
,请更改这些值,否则您可以尝试在.htaccess
文件中更改这些值。
php_value upload_max_filesize 16M
php_value post_max_size 16M
仅当AllowOverride
设置允许时才会有效。否则,你要问你的托管公司。
答案 3 :(得分:6)
您的服务器配置设置允许用户上传最大16MB的文件(因为您设置了upload_max_filesize = 16Mb),但post_max_size仅接受高达8MB的发布数据。这就是它抛出错误的原因。
要上传大文件,post_max_size值必须大于upload_max_filesize。
- 醇>
memory_limit应大于post_max_size
您应始终将post_max_size值设置为大于upload_max_filesize值。
答案 4 :(得分:5)
默认情况下,post_max_size应该是upload_max_filesize的4倍。
反过来
memory_limit应该比post_max_size
答案 5 :(得分:3)
更改php.ini max_input_vars 1000