Solution to php unlink failure: 1. Open the corresponding PHP sample file; 2. Use "unset($info);" to unblock the process of the image; 3. Re-execute the "@unlink" operation. , syntax "@unlink($filePath);".
#The operating environment of this article: Windows 7 system, PHP8, Dell G3 computer.
Recently when I was doing the avatar change function on my website, it involved PHP file upload.
The solution I adopt is that the user first uploads to the server, and then the server uploads it to Alibaba Cloud's OSS. In the middle, there will be a process of temporarily storing the image to the server. So I discovered the problem of deletion failure when using PHP's @unlink (delete specified file) method.
At first I thought my path name was written wrong, but later I confirmed that this parameter was correct. The reason for the deletion failure is that the picture is still occupied by the process, so if we want to successfully perform the @unlink operation, we'd better manually release the file object to avoid deletion failure due to being occupied by other threads or processes. The code snippet is as follows:
// [API接口-用户更新头像] public function setAvatar() { // 获取表单上传文件 $file = $this->request->file('avatar'); if ($file) { // 移动到框架应用根目录/public/uploads/ 目录下 $info = $file->rule('date')->move(ROOT_PATH . 'public' . DS . 'uploads'); if ($info) {//文件上传到服务器成功->接下来上传到OSS $filePath = ROOT_PATH . 'public' . DS . 'uploads/' . $info->getSaveName(); $oss = new Oss(); $result = $oss->putObject($filePath); if ($result) { //上传到OSS成功 unset($info);//解除图片的进程占用 @unlink($filePath); return success(['avatar' => $result['fileSrc']], '头像更新成功'); } } } }
It has to be said that self-study is very difficult, and the reason lies not in the outside world, but in the inside. This time, in order to pursue what I wanted, I cut off my retreat and quit my stable job. I hope these sacrifices will not be worthless.
[Recommended: "PHP Video Tutorial"]
The above is the detailed content of How to solve the problem of php unlink failure. For more information, please follow other related articles on the PHP Chinese website!