Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bioshock

Delete Folder [resolvido]

Recommended Posts

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!

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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)

Share this post


Link to post
Share on other sites
bioshock

Já resolvi:

$path = "images/thumbs/";
foreach(glob($path.'*.*') as $v){
unlink($v);	

Obrigado  :smoke:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.