Thinkphp5 使用unlink删除文件出错Permission denied

今天做图片上传时遇到问题,上传失败则需要删除新上传的图片,结果删除的时候报错

unlink(‘此处为文件路径‘): Permission denied

查了一下网上有人说是文件夹权限问题,最后解决,不是文件夹权限问题

这里删除失败是因为文件还没有被释放,并非权限不足

上传成功之后使用 unser($info) 释放文件,释放文件之后就能正常删除啦!

$file = Request()->file(‘img‘);
        if (!empty($file))
        {
            $info = $file->move(config(‘文件保存路径‘) . $aaa. DS . $bbb);
            if($info){
                // 成功上传后 获取上传信息
                $img = str_replace(‘\\‘, ‘/‘,config(‘文件保存路径‘) . $aaa . DS . $bbb . DS . $info->getSaveName());
                //上传成功之后释放文件
                unset($info);
                //查出并删除旧文件并
                $worn_img = db(‘表名称‘)->where(‘id‘,$id)->value(‘img‘);
                //旧文件截取为可删除状态
                $worn_img = str_replace(‘\\‘, ‘/‘, config(‘文件保存路径‘) . $aaa . DS . $bbb . DS . substr($worn_img,-10));
                try
                {
                    unlink($worn_img);
                } catch (\Exception $e)
                {
                    //图片删除失败,删除新上传的图片
                    $delete_img = str_replace(‘\\‘, ‘/‘, config(‘文件保存路径‘) . $aaa . DS . $bbb . DS . substr($img,-10));
                    unlink($delete_img);
                    return ‘图片删除失败!‘;
                }
            }else
            {
                // 上传失败获取错误信息
                recordErrorLog($file->getError());
                return ‘上传失败!‘;
            }
        }

原文地址:https://www.cnblogs.com/blibli/p/12356310.html

时间: 2024-08-02 12:36:13

Thinkphp5 使用unlink删除文件出错Permission denied的相关文章

android删除文件出错

当删除一个文件,再又一次下载这个同名文件,保存到sdcard时出现error,部分手机出现 Caused by: libcore.io.ErrnoException: open failed: EBUSY (Device or resource busy) at libcore.io.Posix.open(Native Method) at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) at java.io.File.createNewF

C# 删除文件错误 access denied

使用以下代码正常删除整个文件夹内容时,报错如下: if (backupPathDir.Exists) { System.IO.DirectoryInfo di = new DirectoryInfo(backupPathDir.ToString()); foreach (FileInfo file in di.GetFiles()) { file.Attributes = FileAttributes.Normal; file.Delete(); } foreach (DirectoryInfo

adb pull push文件出现Permission denied,明明已经root

其实很简单 首先adb root 如果提示 adbd cannot run as root in production builds 安装一个叫超级adbd的apk 地址http://www.anzhi.com/soft_616421.html# 在手机上赋予root权限,再开启用超级adbd,就行了 此时再push pull就无压力了 另外提示一点,本人在调试时,pull命令可以,但是push命令总是不行 后来发现是adb被360手机管家接管了,退出360手机管家,用adb start-ser

scp 文件 : /目录: Permission denied

Q: A: 进入目录,用root登录,修改权限为777 再进行上传即可: 原文地址:https://www.cnblogs.com/xym4869/p/11712220.html

mac使用ssh出现permission denied(publickey)

看出错信息是权限太开放的问题,google了一下,修改权限,不只是需要修改 .pem 文件的权限,还需要修改.ssh目录和用户目录 chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/ring.pem 再次使用命令 ssh -i ~/.ssh/ring.pem IP地址 发现还是出错 Permission denied (publickey). 无奈多方搜索尝试,发现了aws的排错文档, 里面有这么一段 对于 Amazon Linux AMI,用户名称

eclipse 向HDFS中写入文件报错 permission denied

环境:win7  eclipse    hadoop 1.1.2 当执行创建文件的的时候, 即: fileSystem.mkdirs(Path);//想hadoop上创建一个文件报错 报错: org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 原因: 1. 当前用户

thinkphp5访问报错 ...with message 'mkdir(): Permission denied' in... 或...failed to open stream: Permission denied' in...

报错截图1: 报错截图2: 报错原因没有权限访问thinkphp5/runtime目录. 解决方法: 1.如果thinkphp5/runtime目录下面有文件,先清空thinkphp5/runtime目录: 2.修改thinkphp5/runtime目录权限为可读可写. thinkphp5访问报错 ...with message 'mkdir(): Permission denied' in... 或...failed to open stream: Permission denied' in.

Ubuntu vsftp复制文件到远端时错误,Permission denied

Ubuntu 下复制文件到远端时错误,Permission denied 失败原因如下: (1)vsftp默认配置不允许上传文件 解决办法:修改配置文件 vi /etc/vsftpd.conf. 将"write_enable=YES"前面的#去掉,然后保存. 最后重启vsftp服务器  : service vsftpd restart (2)权限不够 切换到root用户,使用chmod -R 777 filename ,这里filename是你的目录或者文件.-R是指递归设置权限,77

【IOS】mac终端运行.sh文件总是提示permission denied

如果我目录jni有一个list.sh文件 我直接 nxgametekiMacBook-Air:jni luonan$  ./list.sh ../../Classes 提示 permission denied 然后 chmod +x  *.sh 然后执行就OK了 nxgametekiMacBook-Air:jni luonan$ chmod +x *.sh ./list.sh ../../Classes nxgametekiMacBook-Air:jni luonan$  ./list.sh .