
디렉토리가 비어있지 않은 경우 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