偶然看到以前案子寫的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);
}
註:做的事情都一樣,就是強制刪除目錄,效能誰好?還有閒情時再來測吧^^”
在Google及Yahoo找資料,已成為許多人每天必行的公事。「網路」的無遠弗屆,造就了一個世界級的知識寶庫,著實讓我受益良多。
設立此部落格除用做網路行銷、學習記事與知識管理外,希望也能做些回饋和經驗分享,如果有人能從這裡的文章得到一點幫助就好了...
網站生日:2008/09/16 年紀:41個多月
寫下留言