PHP rmdir() 함수란?
PHP의 rmdir() 함수는 비어 있는 디렉터리(directory, 폴더)를 삭제할 때 사용하는 내장 함수입니다. 이 함수가 정상적으로 동작하려면 두 가지 조건이 충족되어야 합니다.
삭제하려는 디렉터리가 반드시 비어 있어야 합니다.
해당 디렉터리를 삭제할 수 있는 적절한 파일 시스템 권한이 있어야 합니다.
디렉터리 안에 파일이나 하위 폴더가 하나라도 남아 있다면 삭제에 실패합니다. 따라서 실무에서는 먼저 unlink() 함수로 내부 파일을 정리한 후 rmdir()을 호출하는 것이 일반적입니다.
구문(Syntax)
rmdir(dir, context)
매개변수(Parameters)
dir − 삭제할 디렉터리의 경로를 지정합니다. (필수)
context − 스트림의 동작 방식을 제어하기 위한 컨텍스트 리소스를 지정합니다. (선택)
반환값(Return)
rmdir() 함수는 디렉터리 삭제에 성공하면 TRUE, 실패하면 FALSE를 반환합니다. 실패 시 PHP 경고(warning) 메시지가 함께 출력되므로, 필요하다면 함수 앞에 @를 붙여 경고를 억제하고 반환값으로 성공 여부를 판단할 수 있습니다.
예제 1: 기본적인 디렉터리 삭제
다음은 'amit'이라는 이름의 빈 디렉터리를 삭제하는 기본 예제입니다.
<?php
$file_path = "amit";
if(!rmdir($file_path)) {
echo("Could not remove $file_path");
}
?>
출력 결과
TRUE
삭제에 성공했기 때문에 TRUE가 반환되었으며, if문 내부의 에러 메시지는 출력되지 않습니다.
예제 2: 디렉터리 생성 후 삭제
mkdir() 함수로 새 디렉터리를 생성한 직후, rmdir() 함수로 해당 디렉터리를 삭제하는 예제입니다.
<?php
mkdir("documents");
$dir = "documents";
// rmdir() 함수로 디렉터리 삭제
rmdir($dir);
?>
출력 결과
TRUE
'documents' 디렉터리가 생성된 후 곧바로 삭제되며, 아무 오류 없이 실행이 종료됩니다.
정리
rmdir() 함수는 간단하지만 빈 디렉터리만 삭제 가능하다는 점을 기억해야 합니다. 파일이 포함된 디렉터리를 통째로 지우고 싶다면 재귀적으로 파일을 삭제한 뒤 rmdir()을 호출하거나, RecursiveDirectoryIterator를 활용하는 방법을 고려해 보세요.