当前位置: 代码迷 >> 综合 >> thinkphp5 unlink 删除文件报错 Permission denied
  详细解决方案

thinkphp5 unlink 删除文件报错 Permission denied

热度:52   发布时间:2023-11-21 22:02:45.0

        最近做项目有一个批量导入功能,本能的就想着导入后应该删除文件,有两处都要用到这个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);  //删除文件
?>


  相关解决方案