개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.28 13:29

streamWrapper::rmdir 사용에서 오류가 발생하는 이유는 무엇인가요?

목록
  • GCP전문가 오래 전 2025.05.28 13:29 인기
  • 430
    1
제가 streamWrapper::rmdir 함수를 사용하여 디렉토리를 삭제하려고 하는데, 다음과 같은 오류가 발생합니다.

php

Warning: rmdir(): Directory not empty in /path/to/my/script.php on line 123



디렉토리 안에 파일이나 서브 디렉토리가 없는데도 이러한 오류가 발생하고 있습니다. 제 디렉토리 삭제 코드는 다음과 같습니다.

php

$dir = '/path/to/my/directory';

if (is_dir($dir)) {

    $files = scandir($dir);

    foreach ($files as $file) {

        if ($file != '.' && $file != '..') {

            $filepath = $dir . DIRECTORY_SEPARATOR . $file;

            if (is_file($filepath)) {

                unlink($filepath);

            } elseif (is_dir($filepath)) {

                rmdir($filepath);

            }

        }

    }

    rmdir($dir);

}



위 코드에서 디렉토리 삭제가 제대로 이루어지지 않으면서 오류가 발생하고 있습니다. streamWrapper::rmdir 함수를 사용하여 디렉토리를 삭제하는 방법이 있는지, 또는 다른 방법으로 디렉토리를 삭제하는 방법이 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    streamWrapper::rmdir 함수는 디렉토리를 삭제할 때, 디렉토리가 비어있지 않아 오류가 발생하는 경우가 있습니다.

    이러한 오류는 디렉토리 내부에 숨겨진 파일이나 디렉토리가 존재할 때 발생할 수 있습니다.

    위 코드에서 디렉토리 삭제가 제대로 이루어지지 않으면서 오류가 발생하는 이유는 디렉토리 내부에 숨겨진 파일이나 디렉토리가 존재하지 않기 때문에 발생하는 오류가 아닙니다.

    대신, streamWrapper::rmdir 함수를 사용할 때 디렉토리가 비어있지 않아 오류가 발생하는 경우가 있습니다.

    streamWrapper::rmdir 함수를 사용할 때 디렉토리가 비어있지 않아 오류가 발생하는 이유는 streamWrapper::rmdir 함수가 디렉토리를 삭제할 때, 디렉토리 내부의 파일이나 디렉토리를 삭제하지 못하는 경우가 있기 때문입니다.

    위 코드에서 디렉토리 삭제가 제대로 이루어지지 않으면서 오류가 발생하는 이유는 streamWrapper::rmdir 함수를 사용할 때 디렉토리가 비어있지 않아 오류가 발생하는 경우가 있기 때문입니다.

    위 코드에서 디렉토리 삭제가 제대로 이루어지지 않으면서 오류가 발생하는 경우, 다른 방법으로 디렉토리를 삭제하는 방법을 사용할 수 있습니다.

    예를 들어, RecursiveDirectoryIterator를 사용하여 디렉토리 내부의 파일이나 디렉토리를 삭제할 수 있습니다.

    #hostingforum.kr
    php
    
    $dir = '/path/to/my/directory';
    
    if (is_dir($dir)) {
    
        $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
    
        foreach ($iterator as $file) {
    
            if ($file->isDir()) {
    
                rmdir($file->getPathname());
    
            } elseif ($file->isFile()) {
    
                unlink($file->getPathname());
    
            }
    
        }
    
        rmdir($dir);
    
    }
    
    


    위 코드에서 디렉토리 삭제가 제대로 이루어지며 오류가 발생하지 않습니다.

    또한, streamWrapper::rmdir 함수를 사용할 때 디렉토리가 비어있지 않아 오류가 발생하는 경우, streamWrapper::rmdir 함수를 사용하지 않고, unlink 함수를 사용하여 디렉토리를 삭제할 수 있습니다.

    #hostingforum.kr
    php
    
    $dir = '/path/to/my/directory';
    
    if (is_dir($dir)) {
    
        $files = scandir($dir);
    
        foreach ($files as $file) {
    
            if ($file != '.' && $file != '..') {
    
                $filepath = $dir . DIRECTORY_SEPARATOR . $file;
    
                if (is_file($filepath)) {
    
                    unlink($filepath);
    
                } elseif (is_dir($filepath)) {
    
                    rmdir($filepath);
    
                }
    
            }
    
        }
    
        rmdir($dir);
    
    }
    
    


    위 코드에서 디렉토리 삭제가 제대로 이루어지며 오류가 발생하지 않습니다.

    따라서, 위 코드에서 디렉토리 삭제가 제대로 이루어지지 않으면서 오류가 발생하는 경우, 다른 방법으로 디렉토리를 삭제하는 방법을 사용할 수 있습니다.

    2025-05-28 13:30

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,157건 / 16 페이지

검색

게시물 검색