php刪除目錄,資料夾-rmdir,unlink
偶然看到以前案子寫的php刪除子目錄函式,想起當時php4的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); }
註:做的事情都一樣,就是強制刪除目錄,效能誰好?還有閒情時再來測吧^^”
太感謝了!! 解決了我一個大問題!! 第二個方法才可以成功!
想請問 我要做一個網頁 可供會員把喜愛房屋加入會員這個網頁的”會員最愛”裡…然後會員可以在會員最愛看喜愛的房屋資料..並且可以勾選這些房屋刪除掉
但我不會做勾選核塊區域刪除的部份
如果大大有時間並願意的話 請幫我解答 謝謝
我用 第二個 function 去刪除 我無法用 DOS 指令移除的資料夾
結果跑出了
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 172 bytes)
似乎已經超過記憶體極限了….