thinkphp5下unlink的 permission denied问题

我遇见这个问题是在上传文件之后,我会利用其hash值检测这个文件是否存在,如果存在我将删除这个文件。
实际应用中,在我删除这个文件时,就会出现permission denied的问题。因为我在windows下进行开发不会出现权限的问题。
只能考虑文件占用问题,因为thinkphp5上传中继承了SplFileObject。而我在删除时,这个文件依旧是打开状态,所以无法删除。
看代码

public function upload(){
        $file = request()->file('file');

        // 移动到框架应用根目录/public/uploads/ 目录下
        $validate = $file->validate(['size'=>1024*1024*2,'ext'=>'jpg,png,gif']);
        if($validate){
            $upload =$validate->move(ROOT_PATH . 'public' . DS . 'uploads');
            $hash = $upload->hash('sha1');
            $type = $upload->getExtension();
            $saveName = $upload->getSaveName();
            $existFile = model('Files')->where('hash',$hash)->where('type',$type)->find();
            if($existFile){
                $upload=null; //如果不加这一行,肯定会出现permission denied问题
                unlink('.'.DS.'uploads'.DS.$saveName);
                return json($existFile);
            }
            $saveInfo=['type'=>$type,'size'=>$upload->getSize(),'hash'=>$hash,'url'=>'/uploads/'.$saveName()];
            model('Files')->save($saveInfo);

            return json(['url'=>'/public/uploads/'.$upload->getSaveName(),$hash]);
        }else{
            // 上传失败获取错误信息
            abort(500,'error');
        }
    }

你可能感兴趣的:(thinkphp5下unlink的 permission denied问题)