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)
似乎已經超過記憶體極限了….