php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项相关的知识,希望对你有一定的参考价值。

 

 

php 上传大文件主要涉及配置 upload_max_filesize post_max_size两个选项
 
今天在做上传的时候出现一个非常怪的问题,有时候表单提交可以获取到值,有时候就获取不到了,连普通的字段都获取不到了,苦思冥想还没解决,最后问了师傅,
师傅看了说挺奇怪的,然后问我 upload_max_filesize的值改了吗,我说改了啊,师傅也解决不了了。过了一会师傅问 post_max_size改了吗,我说那个和上传没关系吧,
师傅没理我,我还是照着自己的想法继续测试,弄了半天还是不行,最后试了师傅提的意见,成功了,原来上传是和 post_max_size有关系的。
 
 
总结 :
php.ini配置文件中的默认文件上传大小为 2M,默认upload_max_filesize = 2M ,即文件上传的大小为 2M,如果你想上传超过8M的文件,比如 20M
 
你必须设定 upload_max_filesize = 20M。但是光设置upload_max_filesize = 20M还是无法实现大文件的上传功能,你必须修改 php.ini配置文件中的post_max_size选项,
其代表允许 POST的数据最大字节长度,默认为 8M。如果POST 数据超出限制,那么 $_POST$_FILES 将会为空。要上传大文件,
你必须设定该选项值大于 upload_max_filesize指令的值,我一般设定upload_max_filesize post_max_size值相等。
另外如果启用了内存限制,那么该值应当小于 memory_limit选项的值。
 
 
文件上传的其他注意事项 :
在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过 30秒的错误,这是因为在php.ini配置文件中 max_execution_time 配置选项在作怪,
其表示每个脚本最大允许执行时间 () 0 表示没有限制。你可以适当调整 max_execution_time的值,不推荐设定为0
 
********************************************************************************************************
解释:
具体可查看 PHP手册 中的 〔php.ini 核心配置选项说明〕
upload_max_filesize 所上传的文件的最大大小。 
post_max_size       设定 POST 数据所允许的最大大小。
memory_limit        设定了一个脚本所能够申请到的最大内存字节数。

一般来说:memory_limit > post_max_size > upload_max_filesize
 
 
upload_max_filesize是限制本次上传的最大值
post_max_size是post数据的最大值, 通过POST提交数据的最大值
一般我们在php中用的是POST方式上传
 
 
 
 

以上是关于php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项的主要内容,如果未能解决你的问题,请参考以下文章

SWFUpload 文件上传插件常用的配置讲解

php 上传大文件 插件 都有哪些

文件上传错误“应用程序/八位字节流”

文件/大文件上传功能实现(JS+PHP)全过程

配置php上传大文件

php 配置上传大文件