PHP : 폴더를 삭제하는 가장 간단한 방법 (내용 포함)
-
18-09-2019 - |
문제
그만큼 rmdir()
폴더에 파일이 포함되어 있으면 함수가 실패합니다. 디렉토리의 모든 파일을 다음과 같이 사용하여 반복 할 수 있습니다.
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);
한 번에 모두 삭제하는 방법이 있습니까?
해결책
글쎄, 항상 있습니다
system('/bin/rm -rf ' . escapeshellarg($dir));
사용 가능한 경우.
다른 팁
rrmdir()
- 재귀 적으로 디렉토리 삭제 :
function rrmdir($dir) {
foreach(glob($dir . '/*') as $file) {
if(is_dir($file)) rrmdir($file); else unlink($file);
} rmdir($dir);
}
function delete_files($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir")
delete_files($dir."/".$object);
else unlink ($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
이 시도 :
exec('rm -rf '.$user_dir);
이 연방은 디렉토리와 모든 하위 디렉터 및 파일을 삭제합니다.
function DelDir($target) {
if(is_dir($target)) {
$files = glob( $target . '*', GLOB_MARK ); //GLOB_MARK adds a slash to directories returned
foreach( $files as $file )
{
DelDir( $file );
}
rmdir( $target );
} elseif(is_file($target)) {
unlink( $target );
}
}
Lprent의 PHP 주석에 위치한 안전하고 좋은 기능 중 하나는 현재 디렉토리에 위치한 기호 링크 디렉토리의 내용을 실수로 삭제하지 못하게합니다.
public static function delTree($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
(is_dir("$dir/$file") && !is_link($dir)) ? delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
제휴하지 않습니다 StackOverflow