bool rmdir ( string $dirname [, resource $context ] ) 
(PHP 4, PHP 5)

해당하는 디렉토리를 삭제해야할 경우 rmdir 함수를 사용합니다.

삭제에 성공하면 true를. 실패하면 PHP 오류코드를 표시합니다. 그러므로 rmdir 함수 앞에 @를 삽입하여 오류코드가 표시되지 않도록 해야 하며, 하위폴더나 파일이 존재하면 삭제에 실패하게 됩니다.

이하 파일 권한(퍼미션)이 0707이나 0777이 아니어도 삭제 실패의 원인이 됩니다. 단, 윈도우 환경의 경우 권한설정이 없으므로 생략이 가능합니다.

<?php
 $dir = 'mydir'; // 삭제 대상 폴더
 if(rmdir($dir)) {
    echo "삭제에 성공하였습니다.";
 } else {
    echo "삭제에 실패하였습니다.";
 }
 ?>

디렉토리 삭제 실패 이유는 권한문제뿐 아니라 디렉토리가 실제로 존재하지 않거나 디렉토리 안에 파일이나 디렉토리가 존재한다면 삭제할 수 없습니다. 그러므로 재귀호출을 이용하여 하위 디렉토리를 일괄 삭제한 다음 해당 디렉토리를 삭제해야 합니다.

<?php
 function rmdir_ok($dir) {
     $dirs = dir($dir);
     while(false !== ($entry = $dirs->read())) {
         if(($entry != '.') && ($entry != '..')) {
             if(is_dir($dir.'/'.$entry)) {
                   rmdir_ok($dir.'/'.$entry);
             } else {
                   @unlink($dir.'/'.$entry);
             }
         }
     }
     $dirs->close();
     @rmdir($dir);
 }

 rmdir_ok('삭제할 경로');
 ?>

0 댓글