最近做项目有一个批量导入功能,本能的就想着导入后应该删除文件,有两处都要用到这个unlink函数删除,结果第一次成功执行,第二次就死活不行了,琢磨了半天,从网上搜到了好多同样的问题,总结主要有以下三种情况:
1、没有释放变量,导致没有删除权限。(例:unset($info))
2、打开文件后,并没有关闭问价指针。(例:fclose($handle))
$file = request()->file('modelfile'); //接收文件if(empty($file)) //判断是否有文件上传{$this->error('请选择上传文件!');}// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move(ROOT_PATH.'public'.DS.'upload/excel/');
//获取文件(日期/文件)
$filename = ROOT_PATH.'public'.DS.'upload/excel/'.$info->getSaveName();
//接下来就是执行相关操作
$handle = fopen($filename,'r'); //打开文件,进行数据读取
……
fclose($handle); // 关闭指针,也就相当于关掉文件
unset($info); //开始释放变量
unlink($filename); //删除文件
3、磁盘文件权限不足,也可以如下操作:
a.Linux操作系统:手动更改文文件权限777
b.Window操作系统:将文件夹所有者更改为 Everyone,并设置 Everyone 对该文件夹的权限 读写权限
c.php程序删除前修改权限
<?php
chmod($filename,0777); //修改权限
unlink($filename); //删除文件
?>