디렉토리 전체를 삭제하는 PHP 소스

기타 2011. 2. 21. 15:19 Posted by friday13th
나만의 사이트를 만들 때, PHP 파일에서 생성한 디렉토리를 삭제하지 못하는 경우가 종종 발생합니다. 물론 이것은 웹호스팅을 사용하는 개발자에게 발생하는 문제입니다. 이 문제가 발생하면 어떻게 처리해야 할까요? 이곳에서 소개하는 디렉토리 삭제 소스를 사용하면 한 번에 해결할 수 있습니다.

delete by M i x y
delete by M i x y 저작자표시 2.0 일반 크리에이티브 커먼즈 라이선스

소스 전체 보기

자세한 설명에 앞서 전체 소스를 먼저 보도록 하겠습니다.

function removeDir($path)
{
    $path = getRealPath($path);
    if (!is_dir($path)) return;
    $directory = dir($path);
    while ($entry = $directory->read()) {
        if ($entry != "." && $entry != "..") {
            if (is_dir($path."/".$entry)) {
                removeDir($path."/".$entry);
            } else {
                @unlink($path."/".$entry);
            }
        }
    }
    $directory->close();
    @rmdir($path);
}
   
function getRealPath($source)
{
    $temp = explode('/', $source);
    if ($temp[0] == '.') {
        $source = $_SERVER['DOCUMENT_ROOT'].'/'.substr($source, 2);
    }
    return $source;
}

이 소스에 대한 자세한 설명

이 소스에 대한 자세한 설명을 시작하기 전에 이 소스의 출처에 대해 알려드리겠습니다. 이 소스는 익스프레스엔진 (XpressEngine)의 파일 관련 클래스에서 가져와 약간의 수정을 한 것입니다.

이 소스는 익스프레스엔진 (XpressEngine), 텍스트큐브 (Textcube) 등의 프레임워크에서 자동적으로 생성된 디렉토리 (예를 들면, files)를 삭제하기 위해 필요합니다. FTP에서 삭제하면 될 것을 왜 이렇게 작업하느냐, 하시는 분들도 계실 것입니다. 하지만, 웹호스팅을 사용하는 개발자의 경우, 프로그램에서 자동적으로 생성된 파일이나 디렉토리는 FTP (FTP만 지원하는 웹호스팅의 경우)를 통해 삭제하지 못합니다. 따라서 위와 같은 소스를 사용하여 삭제가 불가능한 디렉토리를 삭제할 수 있는 것입니다.

사용 방법

이 소스의 사용법은 아주 간단합니다.

아래와 같이 removeDir() 함수를 불러오면 됩니다.

(만약 삭제하고자 하는 디렉토리의 이름이 files 인 경우)
removeDir('files');

물론, 위와 같이 디렉토리를 지정해주는 경우, 위의 함수를 포함하고 있는 파일은 반드시 files 디렉토리와 같은 디렉토리에 위치해야 합니다. 따라서 루트 디렉토리에 위의 소스가 포함된 파일을 저장한 후, 그곳에서 삭제할 디렉토리의 경로를 지정하는 것이 바람직합니다.

마지막으로, 하나의 팁을 알려드리겠습니다.

삭제할 디렉토리의 경로를 ./files 와 같이 입력하면, 이 경로는 자동적으로 <루트 디렉토리>/files로 변환됩니다.