关于move_uploaded_file()出错的问题

move_upload0ed_file()函数返回参数较少,但是引起出错的原因却有很多,所以对于初学者难免会遇到问题。

出错原因大概有以下三点:

1.如果检测到文件不是来自post上传,这个文件不会执行cp工作;

2.目的路径找不到;

3.目的路径权限非执行进程课读写(这条是本人下午发现的);

首先看看这几行代码,了解一下环境:

if(move_uploaded_file($fileInfo[‘tmp_name‘], $destination))

{

   $mes="文件上传成功";

}

else

{

$mes="文件移动失败";

}

结果返回 文件移动失败

今天下午查找了不少资料,大概有以下几种说法:

1.应该用绝对路径,本人的参数 $destination 值为 uploads,加上绝对路径为 /home/llawlite/imooc/shopImoc/test/uploads

经验证不是这个问题。

2.应该在路径前加上 ROOT, $destination=ROOT.$destination; 经验证无效;

最后,只能自己摸索,发现这是一个LINUX文件权限的问题。

首先,在脚本里post过来的文件放在了临时目录里(tmp_dir),然后拷贝到目的路径。

如果目的路径没有写文件的权限,那么函数的执行是会出错的。

今天下午做了如下尝试,首先把目的路径更改为/tmp下 $destination="/tmp".$fileInfo[‘name‘],结果函数成功执行。

经比较发现/tmp的权限是 drwxrwxrwx ,而我的 /home 权限为 drwxr-xr-x ,问题一目了然。

下面修改/home的权限 chmod -R 777 /home (对整个目录以及子目录所有文件更改了权限)。

再把路径改为原来的路径,经验证问题已经解决。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 15:21:00

关于move_uploaded_file()出错的问题的相关文章

解决PHP move_uploaded_file函数移动图片失败

出现的问题描述:今天在实现一个在用户注册时上传头像图片文件的PHP脚本时,出现了问题:PHP脚本在前面已经确定 浏览器端上传文件没有错误.上传的文件是合法的.上传的文件是图像文件.已经在服务器端生成了唯一的文件名.代码接下来我们应该做的就是把文件从临时位置移动到固定位置,于是乎我就写了以下脚本: //把文件从临时位置移动到固定位置@move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename) or hand

PHP容易出错的地方!

本文对PHP编程中易犯错误进行总结,希望新手能够避免! 1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中register_global默认为off 若想取得从另一页面提交的变量: 方法一:在PHP.ini中找到register_global,并把它设置为on. 方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Sess

微信支付错误两个问题的解决:curl出错,错误码:60

如下是运行微信支付测试代码时出错代码: Warning: curl_setopt() expects parameter 2 to be long, string given in D:\wwwroot\weixinpaytest\pay\WxPay.JsApiPay.php on line 99 Fatal error: Uncaught exception 'WxPayException' with message 'curl出错,错误码:60' in D:\wwwroot\weixinpa

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

10.8.5如何升级(app store 出错 请稍后重试 100)

出现问题:苹果以前的老版本,OS X 10.8或是10.8.5在当年提示你升级,你又任性没升级的时候,拖过那阵,你再想升级,就是各种报复.进app store下载或是更新东西都是弹出app stpre 出错,请稍候重试 (100),然后再提示说此系统不支持银联. 现在已经是OS X 10.11了,今天接手了一个老古董,系统才OS X 10.8,按照提示升到了OS X 10.8.5,之后不管怎么点,都没法,百度了一下,10.8.5升级,瞎折腾了好久,网上的方法就一个,搞个安装包.最后还是折腾出来了

php iconv函数转换出错问题

本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)  在php函数库有一个函数:iconv(),iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库. 最近在做一个小偷程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些. 让

Nginx 启动出错 error while loading shared libraries: libpcre.so.1

在 centos 6.5  64位上编译安装nginx1.63语法检查出错[root @localhost conf]# /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 从错误看出是缺少lib文件导致,进一步

表单出错,回到原页面时保留所有表单信息。

PHP中的 session_cache_limiter() 函数是指定会话页面所使用的缓冲控制方法. 语法:string session_cache_limiter ( [string cache_limiter])cache_limiter 要设置的缓存限制的名字返回缓存限制的名字 但是要值得注意的是session_cache_limiter()方法要写在session_start()方法之前才有用. 实际应用: 在开发过程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回

SQL安装过程中“针对SQL Server 注册表的一致性验证“出错解决方式

1.打开注册表,查找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\0804],分别打开Counter 和Help 2.打开Counter,把滚动条拉倒最后,然后记下最大的那个值(不同计算机不一样的),记下后关闭窗口 3.同样的打开Help,滚动到最后记最大的那个值(你们的值不一定跟我一样的哦!!!),记下后关闭窗口 4,再重新定位到Perflib的节点上, 5.双击Last Counter然后在