[ GuTo ] 0 Denunciar post Postado Janeiro 6, 2007 Olá pessoal, beleza? Quero criar uma página que se eu chamar ela, ela apague todos os subdiretorios e arquivos contidos nela. Vi no site do php.net, a função rmdir ( http://php.net/rmdir ) e neste endereço vi também uma função recursiva para fazer isto que quero. Segue a função que vi por lá: function recursiveRemoveDirectory($path) { $dir = new RecursiveDirectoryIterator($path); #echo '<h3>'.$dir.'</h3>'; //Remove all files foreach(new RecursiveIteratorIterator($dir) as $file) { unlink($file); } //Remove all subdirectories foreach($dir as $subDir) { //If a subdirectory can't be removed, it's because it has subdirectories, so recursiveRemoveDirectory is called again passing the subdirectory as path if(!@rmdir($subDir)) //@ suppress the warning message { recursiveRemoveDirectory($subDir); } } //Remove main directory rmdir($path); }Ainda não sou muito familiriazado com PHP, não sei pq nesta função, usa o new para instanciar novamente a mesma função, parecesse coisa do JavaScript. Mas bem, o caso é que quando roda o script, aqui em casa, é gerado um erro: Permission denied Como faço para resolver? Valeu galera, abraços! Compartilhar este post Link para o post Compartilhar em outros sites
vebersol 0 Denunciar post Postado Janeiro 6, 2007 O ideal seria listar todos os arquivos da pasta e fazer um loop para apagar um por um... Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 7, 2007 Amigo, repare que na função existe um foreach, que está apagando arquivo por arquivo.E depois outro loop que apaga todos os subdiretórios.O caso é que está retornando este erro de PERMISSION DENIED.Alguém sabe como resolver? Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 7, 2007 Hum... fiz um teste aqui e vou dizer a experiência que tive:- O erro que falei foi gerado no IIS, onde preciso dar permissões as pastas. Gostaria de saber como dar permissão de escrita/leitura de uma vez para todas as pastas.- No apache, consegui apagar quase tudo... um subdiretório somente não foi apagado, não sei pq, e devolveu o mesmo erro de PERMISSION DENIED. :( Compartilhar este post Link para o post Compartilhar em outros sites
Hamilcar 1 Denunciar post Postado Janeiro 7, 2007 Hum... fiz um teste aqui e vou dizer a experiência que tive:- O erro que falei foi gerado no IIS, onde preciso dar permissões as pastas. Gostaria de saber como dar permissão de escrita/leitura de uma vez para todas as pastas.- No apache, consegui apagar quase tudo... um subdiretório somente não foi apagado, não sei pq, e devolveu o mesmo erro de PERMISSION DENIED. :([ GuTo ], não sei se é o que quer, mas tenta fazer assim para dar permissão no windows, abra meu computador, vá em ferramentas, depois opções de pasta..., em seguida em modo de exibição, desmarque usar compartilhamento simples de arquivo, e então na pasta que você quer dar permissão clique com o botão direito do mouse e vá em propriedades, aprecerá agora uma opção de segurança, vá nela e então sete as permissões dos usuários. Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 16, 2007 Valeu hcar, vou dar uma olhada quando chegar em casa. Tentei executar esta mesma pagina no servidor remoto, que usa Apache 2.x (não lembro ao certo, mas é 2 alguma coisa), e deu o mesmo problema de permissão negada. Via código PHP, conseguimos dar permissões a pastas e suas subpastas e seus arquivos? Andei lendo no php.net sobre o comando chmod(), ele realmente adianta nestes casos? Compartilhar este post Link para o post Compartilhar em outros sites
entchucs 0 Denunciar post Postado Janeiro 16, 2007 Guto,Sempre que tu fizer upload de arquivos dá um chmod pois senão pode ser que tu não tenha permissão para excluílos depois. Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 16, 2007 Hum... Mas isso você diz quando eu fizer o upload via php ou via ftp? :blink: Pq eu queria poder apagar os arquivos do servidor remoto usando a função essa, quando eu quisesse, sem precisar me preocupar com a permissão que tenho, pois eu quero tê-la e pronto, rs. E por exemplo, nesta função aí, antes de excluir qualquer arquivo ou qualquer pasta, se eu fizesse: chmod(path,0777);//http://php.net/chmodCom isso, eu daria todas as permissões pro arquivo, não? Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Janeiro 16, 2007 Eu tentei usar essa função aí tbm, mas não funcionou de jeito algum. Preferi criar minha própria, funciona perfeitamente aqui: function removeDirectory($dir) { $abreDir = opendir($dir); while (false !== ($file = readdir($abreDir))) { if ($file==".." || $file ==".") continue; if (is_dir($cFile=($dir."/".$file))) removeDirectory($cFile); elseif (is_file($cFile)) unlink($cFile); } closedir($abreDir); rmdir($dir);} Compartilhar este post Link para o post Compartilhar em outros sites
entchucs 0 Denunciar post Postado Janeiro 16, 2007 o chmod funciona da forma que tu disse sim desde que o usuário do apache tenha permissão sobre o arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 16, 2007 Guto,Sempre que tu fizer upload de arquivos dá um chmod pois senão pode ser que tu não tenha permissão para excluílos depois.Certo, e me explica isso.Quando eu for enviar os arquivos pro servidor via FTP, como vou dar um chmod? Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 16, 2007 P*rra, que loko! :)E aí, fazer upload via código daí? Não fica mais "complicado"?É que uso uma extensão para FireFox (FireFTP) que simula um programa de FTP (é excelente) e envia tudo, sincroniza e etc. :)Teria algo para isso daí? Compartilhar este post Link para o post Compartilhar em outros sites
[ GuTo ] 0 Denunciar post Postado Janeiro 16, 2007 Bem, achei legal essa idéia, mas no momento meu foco é apenas dar as permissões para poder excluir os arquivos, pq depois os envio via FTP, mas no caso para excluir precisa ser por código.E não sei se toda hora vou ter que ir no administrador do servidor dar as permissões, por isso, gostaria de uma solução via código, que quando fosse excluir os arquivos e pastas, antes mesmo já desse as permissões. Isso tem como? (No caso, usando o chmod(arquivo,0777) antes de chamar unlink() ou rmdir())Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
georgewar 1 Denunciar post Postado Maio 28, 2007 estava lendo o tópico e para quem o mesmo problema, descobri que primeiro deve-se fechar a pasta antes de exclui-láacho que isso dá so no windows...flws Compartilhar este post Link para o post Compartilhar em outros sites
Geovane Krüger 0 Denunciar post Postado Fevereiro 4, 2014 Eu tentei usar essa função aí tbm, mas não funcionou de jeito algum. Preferi criar minha própria, funciona perfeitamente aqui: function removeDirectory($dir) { $abreDir = opendir($dir); while (false !== ($file = readdir($abreDir))) { if ($file==".." || $file ==".") continue; if (is_dir($cFile=($dir."/".$file))) removeDirectory($cFile); elseif (is_file($cFile)) unlink($cFile); } closedir($abreDir); rmdir($dir); } Desculpem reviver o tópico, mas esta sua função funcionou legal, exceto por um pequeno problema. Ela esta excluindo a pasta que deve + a pasta anterior a esta (a qual não deve ser excluída). Por exemplo, A pasta que deve ser excluída é essa que passo ali em $nomeGaleria. $pasta = "../uploads/galerias/".$nomeGaleria.'/'; Mas esta função esta excluindo também a pasta galerias. Por que? Compartilhar este post Link para o post Compartilhar em outros sites