Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Delete Folder [resolvido]

Mensagens Recomendadas

bioshock

Boas,

Estive a ler no site do php.net, que posso usar a função rmdir() para eliminar uma pasta, contudo, esta pasta tem que estar obrigatoriamente vazia, caso contrário dá erro.

Para solucionar este problema, tem que se fazer um loop ao conteúdo da pasta e eliminar os ficheiros, e só depois eliminar a pasta, correcto?

Procurei um pouco no google e encontrei esta função:

<?php 
$dirname = "/images/thumbs";
function delete_directory($dirname) {
   if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
         else
            delete_directory($dirname.'/'.$file);    
      }
   }
   closedir($dir_handle);
   rmdir($dirname);
   return true;
}?>

Mas não me está a funcionar, sugestões? Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

<?php
include ("connection.inc");
// query para eliminar os utilizadores pelo ID
mysql_query("TRUNCATE TABLE produtos")or die ("Erro ao eliminar os dados");
delete_directory($dirname);
// caso seja eliminado com sucesso:
print "<script>alert('Eliminado com sucesso!'); window.location=\"mostrarprodutos.php\"</script>";
mysql_close($con);
?>
<?php 
$dirname = dirname(realpath(__FILE__));
$dirname .= "/images/thumbs";
function delete_directory($dirname) {
   if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
         else
            delete_directory($dirname.'/'.$file);    
      }
   }
   closedir($dir_handle);
   rmdir($dirname);
   return true;
}?>

O caminho está correcto. Se der para eliminar os ficheiros que estão só dentro da pasta, também serve.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Em relação às permissões, sempre que executo o unlink diz-me que o acesso é negado, mas eu procurei um pouco no google, e vi que se tem que utilizar algo do género:

chmod("images/thumbs", 0777);
unlink("images/thumbs");

Mas sem sucesso.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KiNgPiTo

Se estiveres a executar o script sem permissões de chmod não vai alterar para 777... aconselho-te a mudar por ftp as permissões, confirmar se estão a 777 e voltar a verificar se o script funciona... (Nota que todos estes erros estão descritos no error log e é mais fácil se o consultares nestas situações e ver qual os erros que são apresentados)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.