개발자 Q&A

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

2025.05.28 11:39

streamWrapper::mkdir에 대한 질문

목록
  • 백준도사 2일 전 2025.05.28 11:39
  • 5
    1
제가 streamWrapper::mkdir 함수를 사용하여 디렉토리를 생성할 때, 에러가 발생하고 있습니다. 디렉토리가 이미 존재하는 경우 mkdir 함수가 작동하지 않습니다. 이때 mkdir 함수를 사용하여 디렉토리를 생성할 수 있는 방법은 무엇이며, 디렉토리가 이미 존재하는 경우에는 어떻게 처리해야 할까요?

    댓글목록

    profile_image
    나우호스팅  2일 전



    streamWrapper::mkdir 함수는 디렉토리를 생성할 때, 디렉토리가 이미 존재하는 경우 에러를 발생시키는 문제가 있습니다. 이 문제를 해결하기 위해서는 mkdir 함수를 사용하는 방법을 다음과 같이 변경할 수 있습니다.

    1. 디렉토리가 이미 존재하는지 확인하는 코드를 추가합니다.

    #hostingforum.kr
    php
    
    if (!file_exists($dir)) {
    
        mkdir($dir, 0777, true);
    
    }
    
    

    위 코드는 디렉토리가 존재하지 않는 경우에만 mkdir 함수를 호출합니다.

    2. mkdir 함수의第三인자인 recursive 옵션을 true로 설정합니다.
    #hostingforum.kr
    php
    
    mkdir($dir, 0777, true);
    
    

    위 코드는 디렉토리가 이미 존재하는 경우에도 mkdir 함수를 호출합니다. 그러나 이미 존재하는 디렉토리 내부의 파일이나 서브 디렉토리를 삭제하지는 않습니다.

    3. mkdir 함수 대신에 mkdir_recursive 함수를 사용합니다.
    #hostingforum.kr
    php
    
    function mkdir_recursive($dir) {
    
        if (!file_exists($dir)) {
    
            mkdir($dir, 0777, true);
    
        }
    
        $files = scandir($dir);
    
        foreach ($files as $file) {
    
            if ($file == '.' || $file == '..') continue;
    
            $path = $dir . DIRECTORY_SEPARATOR . $file;
    
            if (is_dir($path)) {
    
                mkdir_recursive($path);
    
            }
    
        }
    
    }
    
    

    위 코드는 mkdir_recursive 함수를 호출하여 디렉토리와 그 내부의 파일이나 서브 디렉토리를 삭제하고 재생성합니다.

    2025-05-28 11:40

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

검색

게시물 검색