偶然看到以前案子寫的php刪除子目錄函式,想起當時php4的rmdir無法強制移除整個資料夾,如果資料夾內有檔案,就要先把它們刪除unlink,才能移除這個資料夾…
php刪除目錄,資料夾-rmdir,unlink

稍有閒情,回到官網搜尋php5的函式庫看有沒有新增這功能,竟然還是沒有…雖然我個人覺得這應該是很基本的函式,顯然官方的見解不同,大概很少人需要用到?

官方手冊rmdir留言板有網友提供自行撰寫的函式,記錄一下:
1. delTree

function delTree($dir) {
    $files = glob( $dir . '*', GLOB_MARK );
    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $file );
        else
            unlink( $file );
    } 

    if (is_dir($dir)) rmdir( $dir ); 

}

2. deleteDirectory

function deleteDirectory($dir) {
    if (!file_exists($dir)) return true;
    if (!is_dir($dir) || is_link($dir)) return unlink($dir);
        foreach (scandir($dir) as $item) {
            if ($item == '.' || $item == '..') continue;
            if (!deleteDirectory($dir . "/" . $item)) {
                chmod($dir . "/" . $item, 0777);
                if (!deleteDirectory($dir . "/" . $item)) return false;
            };
        }
        return rmdir($dir);
    }

註:做的事情都一樣,就是強制刪除目錄,效能誰好?還有閒情時再來測吧^^”

 
  • Hemidemi
  • MyShare
  • Udn
  • funP
  • Furl