thinkPHP版本 3.2.3
服务器: Nginx
环境:centOS
描述
在做头像上传的时候,上传的根目录 默认是/Uploads/.
但由于之前修改过Nginx的配置,当访问的是静态资源的时候,
直接去/Public/Home/ 下查找.
于是就要修改默认路径.
那么问题来了,根据手册一般的方法是:
$upload -> maxsize = 3145728; //设置最大字节
$upload -> exts = array('jpg', 'jpeg', 'gif', 'png');//限定后缀
$upload -> saveName = $_SESSION['user_id']; //每个人的头像是唯一的 用ID标志
$upload -> replace = true;//设置同名覆盖
$upload -> autoSub = false; //不根据日期再设置子目录
$upload -> rootPath = './Public/Home/'; // 设置附件上传根目录
$upload -> savePath = './headImgs/';
运行发现没有效果,
想了想可能是缓存问题.
于是,清除缓存,重启浏览器.
还是没有效果.
以为是自己写错,遂查手册,发现无误.
苦思冥想无果,遂百度.
于是在
http://www.thinkphp.cn/bug/2732.html,找到了原因.
原来是thinkPHP自身的BUG,已经实例化上传类后,再进行修改上传根目录,会无效化.
必须用配置文件传递参数的方法来实例化上传类.
解决方案:
$config = array(
'maxsize' => 3145728,
'exts' => array('jpg', 'jpeg', 'gif', 'png'),
'saveName' => $_SESSION['user_id'],
'replace' => true,
'autoSub' => false,
'rootPath' => './Public/Home/',
'savePath' => './HeadImgs/'
);
$upload = new Upload($config); //实例化上传类
重新登录,注册,上传头像,查看数据库,发现路径终于对了.
刷新页面,退出,重新登录.
发现头像成功显示.
问题解决.
浪费时间 : 一下午.
以上.