首頁  >  文章  >  後端開發  >  如何解決php unlink失敗的問題

如何解決php unlink失敗的問題

藏色散人
藏色散人原創
2021-03-08 11:16:203299瀏覽

php unlink失敗的解決方法:1、開啟對應的PHP範例檔案;2、透過「unset($info);」解除圖片的進程佔用;3、重新執行「@unlink」操作即可,語法“@unlink($filePath);”。

如何解決php unlink失敗的問題

本文操作環境:Windows7系統、PHP8、Dell G3電腦。

最近做我網站的更換頭像功能時,涉及到了PHP的檔案上傳。

我採用的方案是使用者先上傳到伺服器,伺服器再上傳到阿里雲的OSS,中間會有一個把圖片暫時儲存到伺服器的過程。於是在使用php的@unlink(刪除指定檔案)方法時發現了刪除失敗的問題。

開始以為是我的路徑名寫錯了,後來確認這個參數沒有錯。刪除失敗的原因是圖片仍然被進程佔用,所以想要成功執行@unlink操作,我們最好手動釋放下文件對象,避免因為被其他線程或進程佔用而導致刪除失敗,代碼片段如下:

// [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']], '头像更新成功');
}
        }
}
}

不得不說,自學是困難重重的,原因不在於外,在於內。這次為了追尋所想,斬斷了退路,辭掉了安穩的工作,希望不要讓這些犧牲,毫無價值可言。

【推薦:《PHP影片教學》】

以上是如何解決php unlink失敗的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn