php上传大文件失败的解决办法

昨天一做php开发的网友问我为什么上传大文件总是失败,但是上传小文件就没有问题。作者一时半会儿也不知道什么原因,遂网上搜搜帮其分析原因,看到一篇很不错的关于php上传大文件失败的各种原因的总结以及各种解决办法的,于是转来与大家分享之。
  
下面分别是各种原因以及解决办法

(1)文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录。如果未指定则 PHP 使用系统默认值。

php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限。

(2)max_execution_time 的值必须足够大。变量 max_execution_time 设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增大,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭,例如设置为 90 秒。

max_execution_time = 90

注意在php函数中还有个 set_time_limit 函数,和以上这个设置的作用是相同的,这两者的区别就是 以上是在 php.ini 文件中设置的,而 set_time_limit 是写在php文件中的。所以也可以通过在页面中用 set_time_limit 设置程序的最长执行时间,比如无限制即:set_time_limit(0);

(3)file_uploads = On 默认值为on,意思是允许通过 HTTP 进行文件上传,此选项不能设置为OFF。

(4)upload_max_filesize = 2M 设定文件上传的大小的最大值,php.ini配置文件中的默认文件上传大小为2M,php初学者容易犯的一个错误是在编写文件上传功能时通过设置上传文件最大大小的表单区域,即允许上传文件的最大值,max_file_size(隐藏值域)的值来规定上传文件的大小,其实一般别人可以绕过这个值,所以安全起见,最好是在 php.ini 配置文件中配置 upload_max_filesize 选项,设定文件上传的大小。默认 upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize = 20M。

(5)post_max_size 这个值也必须足够大。这个变量也是一个同表单提交相关的变量,它限制的是客户端通过POST方法进行一次表单提交时PHP程序所能够接收的最大数据量。一般情况下,将此值的值设置的比 upload_max_filesize 略大即可,比如要上传20MB的文件,此值可以设置为 21MB。

(6)max_input_time 此变量可以以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在网络比较慢的情况下,则需要增加此值以增大接收数据所需要的时间,比如将此值设置为 90秒。

max_input_time = 90

(7)memory_limit 也必须足够大,为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量。变量memory_limit的值应当适当大于post_max_size的值。

(8)另外如果你的主机是 nginx 操作系统的话,如果以上操作都不行的话,记得在 nginx 的配置文件里面加上 client_max_body_size 20m; 这样一句,即表示最大允许上传 20MB,具体根据自己的情况来。我的 nginx 配置文件的位置在 /usr/local/nginx/conf/nginx.conf。

时间: 2024-09-12 18:42:05

php上传大文件失败的解决办法的相关文章

php上传大文件失败的原因及应对策略_php技巧

为什么上传大文件总是失败,但是上传小文件就没有问题.小编也不得其解,网上搜其原因,整理了一篇关于php上传大文件失败的原因和解决办法的文章,分享给大家. 下面分别是各种原因以及解决办法:第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定则 PHP 使用系统默认值. php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限. 第2种情况:max_e

windows2008-win2008+iis7上传大文件失败

问题描述 win2008+iis7上传大文件失败 按照网上说的修改了以下几个地方,但还是不行,我传的是500M左右的mp4视频,求各位大神帮忙看看! iis里的限制属性里已经修改 IIS__schema.xml: applicationHostxml: web.config:

jsp上传大文件失败的问题

问题描述 jsp上传大文件往往会超时失败,但是换成swfupload进行上传,就可以上传大文件了我想问下,这两种上传所用的技术有什么不同? 解决方案 解决方案二:你前面用的是什么,有设置限制文件大小吗?解决方案三:FTP...解决方案四:就我了解,普通的jsp上传文件,用的http协议,在上传大文件的时候,经常会失败,我猜测是不是这样:因为http协议不支持断点续传,如果公网网络环境不好的话,上传几百兆的文件的时候,免不了在特定的时刻会掉线.导致上传失败.但是,我想知道,swfupload是采用

uploadify上传大文件失败

问题描述 1.服务器上的大小限制是1G,经过几次测试发现小于300M的文件是可以正常上传的2.大于300M的文件上传到百分之3的时候uploadify就会执行onerror,经捕获一场是2038IO异常. 解决方案 解决方案二:来人帮忙参考下解决方案三:你是要上传什么咚咚啊解决方案四:尼玛,超大的就请使用FTP或者其他到吧.uploadify对大点文件支持不了

php 无法上传大文件问题完美解决方法

1.打开php.ini(打开方式就不用说了,百度一大堆) 2.查找post_max_size 表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的 默认为8M,设置为自己需要的值,此参数建议要设置比upload_max_filesize大一些 3.查找File Uploads 是否允许通过http上传文件的开关,确认file_uploads = on 4.查找upload_tmp_dir 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹

Uploadify上传大文件以及Http error 404 解决方案

之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章:[Asp.net]Uploadify所有配置说明,常见bug问题分析. 大文件上传 第一步:修改uploadify参数 1             'fileSizeLimit': '0',//单个文件大小,0为无限制,可接受KB,MB,GB等单位的字符串值 2             'fileTypeDesc': '文件',

怎么解决上传大文件(>100M)jsp的

问题描述 怎么解决上传大文件(>100M)jsp的 我一上传超过100M的文件 内存就溢出,怎么办,在线等挺急的 解决方案 http://blog.csdn.net/shenzhennba/article/details/12854315 解决方案二: 可以用plupload进行分块上传. 解决方案三: Hhhhhhhhhjjjj

win2008 iis7 上传大文件限制的真正解决办法_win服务器

iis7 上传大文件限制的真正解决办法 修改IIS_schema.xml这个文件要先获得这个文件的控制权; 进入目录C:\Windows\System32\inetsrv\config\schema,修改文件IIS_schema.xml 权限: 进入IIS_schema.xml文件权限修改,选择"高级" 选择"所有者" 选中 administrators 确定 再进入权限编辑,修改administrators 完全控制. 再去掉IIS_schema.xml的只读属性

ASP.NET解决上传大文件问题的方法_实用技巧

上传文件的控件为:FileUpload Asp.Net对上传文件大小有限制.默认情况下用户只能上传4MB大小的文件,这会给用户带来不便.所以如果要上传40MB大小的文件.只能修改配置文件 关键代码如下 复制代码 代码如下:  protected void btnSend_Click(object sender, EventArgs e)     {         try         {             //上传文件的思路:             //获取上传文件的名称,此时为一个