1. 程式人生 > >[email protected]刪除檔案失敗原因

[email protected]刪除檔案失敗原因

最近做我網站的更換頭像功能時,涉及到了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']], '頭像更新成功'); } } } }

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