近日在Thinkphp5.1 上传excel文件, 用后删除,但出现报错Permission denied,认真查过 路径没有问题,以下是代码
//上传
$info = $file->rule('uniqid')->validate(['size'=>1024*1024*8,'ext'=>'xls'])->move( '../uploads');
if($info){
$filepath='../uploads/'.$info->getSaveName();
}else{
$this->error($file->getError()) ;
}
//读取文件
$exceldata= excel_read($filepath, 3,'B','H');
//删除导入的excel文件
if(file_exists($filepath)){
unlink($filepath);
}
删除文件的办法在Thinkphp3.2中试过,没有问题,网上有人说是文件夹权限问题,我设成everyone完全控制也没用,后来我想既然3.2好用,5.1不能用问题一定在框架的差别上,于是怀疑是不是文件没关闭,但也找不到关闭文件的方法, 后来看到一个帖子说是 用unset先释放$info,一语点醒梦中人, 还真就是这个问题,于是在读取文件前加上unset($info);问题解决。
//上传
$info = $file->rule('uniqid')->validate(['size'=>1024*1024*8,'ext'=>'xls'])->move( '../uploads');
if($info){
$filepath='../uploads/'.$info->getSaveName();
}else{
$this->error($file->getError()) ;
}
unset($info);
//读取文件
$exceldata= excel_read($filepath, 3,'B','H');
//删除导入的excel文件
if(file_exists($filepath)){
unlink($filepath);
}