簡體   English   中英

使用php刪除文件夾時無法刪除文件夾中的最后一個文件

[英]unable to delete a last file in folder while deleting folder using php

我正在從其他網站調用我的php函數,該網站會在后台刪除服務器上的文件夾。

這是我用來刪除文件夾的功能。

public static function remove($dir)
        {
            if (is_dir($dir)) {
                $diropen = opendir($dir);
                while($d = readdir($diropen)) {
                    if ($d!= '.' && $d != '..') {
                        self::remove($dir . "/$d");
                    }
                }
                @rmdir($dir);
            } elseif (is_file($dir)) {
                @unlink($dir);
            }
        }

如果我的文件夾中有三個文件,則它將僅刪除兩個文件,並且無法刪除最后一個文件,或者無法對最后一個文件進行取消鏈接。

如果我有兩個文件,那么它只會刪除一個文件。

我已經使用is_writable檢查了可寫權限,所有文件都為true。

有人可以幫我嗎。 或在后台調用此函數時如何調試此行為。

我的目錄是在一些其他的功能,開放的,所以我closedir我的文件夾,然后上面的函數工作正常。

<?php
function delete_directory($target) {
         if (is_dir($target))
           $dir_handle = opendir($target);
     if (!$dir_handle)
          return false;
     while($file = readdir($dir_handle)) {
           if ($file != "." && $file != "..") {
                if (!is_dir($dirname."/".$file))
                     unlink($dirname."/".$file);
                else
                     delete_directory($target.'/'.$file);
           }
     }
     closedir($dir_handle);
     rmdir($target);
     return true;
}

?>

使用closedir,您會沒事的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM