问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php文件上传失败的问题

发布网友 发布时间:2022-04-06 03:15

我来回答

5个回答

热心网友 时间:2022-04-06 04:45

在用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会不会也有这种情况。

热心网友 时间:2022-04-06 06:03

if(is_uploaded_file($_FILES['upload']['tmp_name'])){
if(file_exists($_FILES['upload'][name])){
//文件存在
}else{
if(move_uploaded_file($_FILES['upload']['tmp_name'], './upload/')){
//移动成功
}else{
//移动失败
}
}
}else{
//没有文件上传
}

热心网友 时间:2022-04-06 07:37

if($_FILES["upload"]["tmp_name"]){
move_uploaded_file($_FILES["upload"]["tmp_name"], "../download/".$_FILES["upload"]["name"]);
}else{
echo '没有上传文件';
}

热心网友 时间:2022-04-06 09:29

先在本地测试 确保代码没有问题,然后上传到你上面测试的机子,这样才知道是不是权限问题还是其他问题

热心网友 时间:2022-04-06 11:37

你是在服务器上操作吗??是不是你的上传文件的文件夹的权限不够呢??没有定权限的话就上传不上文件的。。。追问我所有的文件夹和文件的权限我都修改过了,都有权限。

追答提示什么错误。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 不更改PHP上传文件限制(php.ini)如何上传大容量文件有没有插件什么的 解决php上传大文件问题 phpstudy 5.6n大文件上传不了 修改了php.ini只能上传到105左右大小的文件 120以上还是上传不了 wordpress 上传大于 20m媒体 就提示 http错误 php.ini配置过上传限制了 php环境无法上传图片的几种解决办法 php.ini限制上传大小,修改好了不起作用 wordpress设置了投稿者可以上传,但是上传时有的文件能够成功,有的文件会出现错误! php无法上传文件 文件是空php.ini禁止了上传,或其中post_max_size的值小于upload_max_filesize的值。 加了个 &lt;?php the_content(); ?&gt; 代码,后多了一个换行代码,请问怎么去掉 有什么办法可以让PHP页面立即结束 PHP网页过期怎么办 PHP设置页面过期有什么用 PHP 怎么设置过期时间 PHP 令网页过期(失效) php设置页面过期时间 php 如何控制注册成功后,后退页面过期。 PHP如何设置页面最大执行过期时间 用NetBeans开发php,怎么在NetBeans改文件后缀名? 怎样用php改成do 上传php文件被安全狗拦截怎么办 更改PHP上传限制怎样生效? php无法上传文件该怎么办? 为什么修改了php.ini后上传文件还是失败? PHP,上传文件不成功问题 php上传文件错误怎么解决 python如何随机选取n个不同的数字 python创建一个列表num1生成10个200以内的随机数 python程序设计!图中代码是输出8位随机数,如何实现输出10个8位随机数? 在python里调用随机模块如何生成一个个十百千万位各不相同的随机数字? python:生成10个随机数,然后进行排序,最后将排序后的整数写入文件a.txt 这个编程怎么写? python 生成10个1~1000内的随机数 十个数字之和小于5000就输出结果 python生成包含500以内的10个随机数的列表,打印最大值和最小值的和 swftools 能将DOC转PDF吗,如果不行 PHP代码该怎么实现? 许昌鲤鱼IT电脑计算机软件编程培训中心教你如何利用PHP生成PDF文件? 用php将php文件转成pdf格式的文件怎么做 设置php.ini的mongodb.so后,启动lnmp报错 centos 6.2 安装lnmp(nginx+php+mysql),html能打开,php显示404 Not Found 502 bad gateway怎么办 linux平台下搭建lnmp环境时候出现错误