개발자 Q&A

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

2025.06.17 08:16

SSH2 SFTP 디렉토리 삭제 오류

목록
  • PHP장인 오래 전 2025.06.17 08:16
  • 64
    1
저는 SSH2 SFTP를 사용하여 파일을 관리하고 있습니다.
디렉토리를 삭제하는 ssh2_sftp_rmdir 함수를 사용하고 있지만, 디렉토리가 비어있지 않은 경우 오류가 발생합니다.
디렉토리가 비어있지 않은 경우 어떻게 처리해야 하는지 알려주세요?

    댓글목록

    profile_image
    나우호스팅  오래 전



    디렉토리가 비어있지 않은 경우 SSH2 SFTP의 ssh2_sftp_rmdir 함수를 사용하여 디렉토리를 삭제할 수 없습니다.

    대신, ssh2_sftp_rmdir 함수를 사용하기 전에 디렉토리 내의 모든 파일을 삭제하는 ssh2_sftp_rmdir 함수를 사용하여 디렉토리를 비우고, 그 후에 ssh2_sftp_rmdir 함수를 사용하여 디렉토리를 삭제할 수 있습니다.

    또는, ssh2_sftp_rmdir 함수의 옵션을 사용하여 디렉토리를 강제로 삭제할 수 있습니다. ssh2_sftp_rmdir 함수의 옵션 중 하나인 SSH2_SFTP_RMDIR_RECURSIVE 옵션을 사용하면 디렉토리 내의 모든 파일과 서브디렉토리를 삭제하고, 그 후에 디렉토리를 삭제할 수 있습니다.

    예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $ssh2 = ssh2_connect('호스트명', 22);
    
    ssh2_auth_password($ssh2, '사용자명', '비밀번호');
    
    $sftp = ssh2_sftp($ssh2);
    
    
    
    // 디렉토리 내의 모든 파일을 삭제합니다.
    
    $dir = ssh2_sftp_opendir($sftp, '/디렉토리명');
    
    while (($entry = ssh2_sftp_readdir($dir)) !== false) {
    
        if ($entry == '.' || $entry == '..') {
    
            continue;
    
        }
    
        $file = ssh2_sftp_lstat($sftp, '/디렉토리명/' . $entry);
    
        if ($file['type'] == SSH2_SFTP_FILE) {
    
            ssh2_sftp_unlink($sftp, '/디렉토리명/' . $entry);
    
        }
    
    }
    
    ssh2_sftp_closedir($dir);
    
    
    
    // 디렉토리를 삭제합니다.
    
    ssh2_sftp_rmdir($sftp, '/디렉토리명');
    
    


    또는, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $ssh2 = ssh2_connect('호스트명', 22);
    
    ssh2_auth_password($ssh2, '사용자명', '비밀번호');
    
    $sftp = ssh2_sftp($ssh2);
    
    
    
    // 디렉토리를 강제로 삭제합니다.
    
    ssh2_sftp_rmdir($sftp, '/디렉토리명', SSH2_SFTP_RMDIR_RECURSIVE);
    
    


    위의 코드를 사용하여 디렉토리를 삭제할 수 있습니다.

    2025-06-17 08:17

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

검색

게시물 검색