php unlink失敗的解決方法:1、開啟對應的PHP範例檔案;2、透過「unset($info);」解除圖片的進程佔用;3、重新執行「@unlink」操作即可,語法“@unlink($filePath);”。
本文操作環境: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中文網其他相關文章!