Apagar pasta e conteudo interno!
Boa tarde pessoal estou com um pequeno problema, tenho uma aplicação que guarda as imagens do usuário em uma pasta, e quando o usuário é excluido os arquivos da pasta tabem são, ate ai tudo bem, mas eu estou tentado escluir a propria pasta pois ela ainda permanece, apenas seu conteudo é excluido.
EX: quero apagar a pasta "fotos/fulano" e seu conteudo, bem o conteudo da pasta "fulano" é excluido mas a propria pasta "fulano" não é! a função que uso apaga tudo que estiver dentro (mesmo outra pasta com arquivos) mas não a propria pasta.
codigo que uso:
$caminhoParaDiretorio = "fotos/";
// definindo um array para exibir os erros
$erros = array ();
// definindo o objeto que faz a iteração do diretório
$diretorio = new RecursiveDirectoryIterator ( $caminhoParaDiretorio );
// definindo o objeto que fará a iteração recursiva
$arquivos = new RecursiveIteratorIterator ( $diretorio, RecursiveIteratorIterator::CHILD_FIRST );
// iterando o objeto
foreach ( $arquivos as $arquivo ) {
// verificando permissão, ou seja, se o arquivo pode ser modificado
if ($arquivo->isWritable ()) {
// verificamos se a iteração atual é de um diretório
if ($arquivo->isDir ()) {
// se for, utilizamos rmdir para excluir
rmdir ( $arquivo->getPathname() );
// senão, testamos se é um arquivo
} elseif ($arquivo->isFile ()) {
// para arquivos, utilizamos o unlink
unlink ( $arquivo->getPathname() );
}
// caso o arquivo não possa ser modificado, gravamos na variável o nome do arquivo e a permissão do arquivo
} else {
$erros [] = 'O arquivo ' . $arquivo->getPathname() . ' tem permissões ' . $arquivo->getPerms () . ' e não pode ser excluído.';
}
}
// caso existam erros, mostramos, ou exibimos mensagem de sucesso.
if (count ( $erros )) {
return implode ( '<br />', $erros );
} else {
echo "Arquivos excluídos com sucesso.";
}
Já tentei colocar rmdir("fotos/fulano"); mas só funciona com pastas que nunca tiveram arquivos dentro.
alguem pode me ajudar? Obg pela atenção!
Discussão (3)
Carregando comentários...