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

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

삭제에 성공하면 true를. 실패하면 php 오류코드를 표시합니다. rmdir함수앞에 @를 삽입하여 오류코드가 표시되지 않도록 해야 하며, 하위폴더나 이하 파일 권한(퍼미션)이 0707이나 0777이 아니면 삭제에 실패하게 됩니다. 단, 윈도우의 경우 권한설정이 없으므로 생략됩니다.

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

디렉토리 삭제 실패 이유는 권한문제뿐 아니라 폴더가 없거나 아니거나 삭제대상 폴더 내의 파일이나 폴더가 존재하면 삭제할 수 없습니다. 그러므로 재귀호출을 이용하여 하위 폴더를 일괄 삭제하게 합니다.

예제 (ex #2

 <?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('삭제할 경로'
);

 
?>


php는 쉘 명령으로 실행할 수 있는 기능을 지원합니다. 역따옴표(``)를 사용하는 것인데, 이 기능은 shell_exec 함수와 동일합니다.

다음은 쉘 명령으로 mydir이라는 디렉토리를 생성시키고자 합니다.

예제 (ex #1
 <?php
 $output 
'mydir'
;
 `
mkdir $output`; 
// mydir 이라는 폴더를 생성합니다.
 
?>

역따옴표는 쉘 명령을 실행할 수 있어서 다른 사용자가 명령을 내리기전에 escapeshellarg()나 escapeshellcmd()를 이용하여, 위험한 명령을 실행하지 못하게 해야 합니다

예제 (ex #2
 <?php
 $e 
'mydir'
;
 
$output escapeshellcmd($e
);
 `
mkdir ${output}`; 
// mydir 이라는 폴더를 생성합니다.
 
`chmod 0707 ${output
}`;
 
?>