当前位置:首页 » 文件管理 » php上传大文件失败

php上传大文件失败

发布时间: 2024-10-19 14:52:25

❶ 如何突破php上传文件大小限制

1. 一般的php文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找

Java代码

  • max_execution_time



  • 默认是30秒.改为


  • max_execution_time = 0


  • 0表示没有限制


  • 以上修改的是php上传文件中脚本执行超时时间



  • 2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到php上传文件。


  • php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.


  • 查找 post_max_size .改为


  • Java代码

    post_max_size=150M



  • 3. 修改了第二步,但php上传文件时最大仍然为 8M。


  • 为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。


  • 查找upload_max_filesize,默认为8M改为


  • Java代码

    upload_max_filesize=100M

❷ php文件上传失败的问题

在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大小的设置,而文件可传大小是受到多种因素制约的,现总结如下:
1、php.ini:upload_max_filesize 所上传的文件的最大大小。默认值2M。

2、php.ini:memory_limit 本指令设定了一个脚本所能够申请到的最大内存字节数,默认值8M。如果不需要任何内存上的限制,必须将其设为 -1。如果内存不够,则可能出现错误:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)
3、php.ini:post_max_size 设定POST数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。
4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds
5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
6、如果用到mysql的BLOB进行二进制文件存储,则需要设置my.ini:max_allowed_packet=xxM

7、httpd.conf
在 Apache 里面有一个选项是 LimitRequestBody,这个选项可以限制用户送出的 HTTP 请求内容。这个选项可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 内使用,分别可以用在 virtualhost 或目录属性设定。而 LimitRequestBody 的设定值是介乎 0 (无限制) 至 2147483647 (2GB)。
例如要在目录 D:/AppServ/www 设定上传限制为 100K,可以在 .htaccess 或 httpd.conf 加入以下语句:
LimitRequestBody 1024000000
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all
如果透过 .htaccess 设定,储存档案后会立即生效;如透过 httpd.conf 设定,须要重新启动 Apache。
PHP关于文件上传部分,特别提到表单隐藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文档中给出的例子如下:
<form enctype=”multipart/form-data” action=”_URL_” method=”POST”>
<input type=”hidden” name=”MAX_FILE_SIZE” value=”30000″>
Send this file: <input name=”userfile” type=”file”>
<input type=”submit” value=”Send File”>
form>
Send this file:
这里设置MAX_FILE_SIZE = 30000,期待一种可能,使得浏览器在传送文件之前能够依此作出预先判断,如果文件尺寸大于30000字节,则不执行实际的POST动作。也就是不往服务器发送文件内容,而是直接在客户端提醒用户“你试图上传的文件超过30000字节”。
这的确是一个非常棒的主张,但在现实中却暂时无法实现。不是因为这个限制可以“被简单地绕过”,而是IE和FireFox这两个主流浏览器都不支持这个特性。PHP的这个建议尚未被采纳。
MAX_FILE_SIZE还有一个用场:后台PHP会判断接收到的文件大小是否大于这个值,如果超出,$_FILES[‘thisfile’][‘error’]会被设置为UPLOAD_ERR_FORM_SIZE(2),同时放弃保存临时文件,将$_FILES[‘thisfile’][‘size’]置0。
这个例子,没问题,表现正常,当我试图上传一个40多K的文件时,PHP程序报告“文件超过MAX_FILE_SIZE”。
但是,如果我们将表单中的MAX_FILE_SIZE从30000减少到1000,情形又如何呢?
上传800字节的文件,正常;
上传40K的文件,PHP报告文件过大,也正常;
上传3000个字节的文件,PHP未报告错误,它成功保存了文件!出乎意料!
问题就出在main/rfc1867.c中判断文件是否超长的这部分代码上。php每次从buffer中读取FILLUNIT字节长度的内容后,首先判断“已经读到的内容长度(total_bytes)”是否大于MAX_FILE_SIZE,然后再增加“已经读到的内容长度(total_bytes)”。这样一来,和预计的结果之间至多会有FILLUNIT字节的误差,而FILLUNIT=1024*5=5K。(点击bug了解详细内容)
这就是说,当MAX_FILE_SIZE<5K时,上传一个大于MAX_FILE_SIZE,但是小于5K的文件是没有问题的。
当然,因为这个设置很容易被绕过,所以服务器端编程不应当依赖于MAX_FILE_SIZE。而且,5K到底是个很小的数值,对大多数上传文件的表单来说没有影响。
PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的设置,和客户端上传给服务器端的流量大小无关。
Apache服务器从客户端接收长度不超过LimitRequestBody字节数的请求,然后传送给php模块,php模块再决定是否保存成临时文件,设置$_FILES全局变量,移交给script进一步处理。
这个Apache的LimitRequestBody选项缺省值=0,允许Request body的最大字节数是2G(Linux + Apache)
最后还要注意的是:
html本身能够post数据也是有限制的,不能超过2G。
ftp客户端有文件偏移指针的2GB边界限制,未使用特殊编译flag编译的ftp服务器端或者客户端,无论在什么FS中都不支持大于2GB的文件。不知道PHP会不会也有这种情况。

❸ php无法上传文件

我也遇到过,我是APACHE+PHP的环境。
造成这个情况的原因可能比较多,我也只说的出来几个,你试一下
1.PHP程序的问题,如果可能的话,看一下源代码的上传模块。
2.上传文件的文件名必须是中文,或者必须是英文or数字.
3.如果有后台的话,则有可能是后台的功能配置,特别注意一下上传文件的大小与格式。
如果还是不能上传,我就怀疑是上传模块的问题了,你可以给你的Php站加一个上传模块,或者从后台上传。
而且有的模块是只能从后台上传,也就是只有管理员可以上传。

❹ php上传文件 关于上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值

你上面那个是判断出现错误情况下的,判断有没超过你定义的大小是返回错误为0的情况下进行判断。
if($_FILES['file']['error']>0){
switch($_FILES['file']['error']){
case1:
echo"上传的文件超过了php.ini中upload_max_filesize选项限制的值。";
break;
case2:
echo"上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。";
break;
case3:
echo"文件只有部分被上传。";
break;
case4:
echo"没有文件被上传。";
break;
default:
echo"未知错误!";
}
exit;
}
else
{
if($_FILES['file']['size']>1000000)
{
echo"上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。";
exit;
}
}

echo"上传成功";

❺ php上传问题 在上传不成功的情况下,当上传文件大于10M(大概数)时就会报错,而不是根据程序提示,

你说的10M应该是php.ini里设置的上传文件大小限制,而你这个switch判断是基于表单上传文件大小来判断的,两者毫无相关!
一、超过10M,在php底层处理请求时就直接报错了,根本执行不到你switch的地方,所以报错是非预期的
二、超过2M,php能正常执行,所以会按照你switch来报错

这里,你要搞清楚php的上传文件大小限制跟form表单上传文件大小限制的关系

❻ php 2G 大的文件上传不了 服务器也配置了~ 什么原因 如何解决~~

大文件上传,最好采用其它方式,比如ftp之类的,http上传很容易出问题,而且也受到服务器的限制,比如内存大小,比如磁盘分区格式之类

热点内容
压缩机380接线图 发布:2024-10-19 17:19:35 浏览:536
站街脚本 发布:2024-10-19 17:00:40 浏览:385
python段子 发布:2024-10-19 16:53:42 浏览:339
本田皓影混动版尊贵版都有哪些配置 发布:2024-10-19 16:44:13 浏览:336
抖音真空缓存 发布:2024-10-19 16:42:53 浏览:394
vs修改源程序重新编译 发布:2024-10-19 16:19:44 浏览:179
服务器黑名单是什么 发布:2024-10-19 16:18:12 浏览:440
rust如何开服务器 发布:2024-10-19 16:10:04 浏览:834
flappybird源码 发布:2024-10-19 15:56:31 浏览:539
java静态代理 发布:2024-10-19 15:52:52 浏览:363