Excluindo a pasta __macosx com PHP?
-
21-09-2019 - |
Pergunta
Alguém já teve alguma experiência em excluir o __MACOSX
Pasta com PHP?
A pasta foi gerada depois que eu abri um arquivo, mas não consigo excluí -lo.
o is_dir
A função retorna falsa no arquivo, fazendo com que os scripts de exclusão recursiva falhem (porque dentro do arquivo são os arquivos 'temp') para que o diretório não esteja vazio.
Estou usando a classe Ziparchive integrada (Método Extracto) no PHP5.
O script rmdir que estou usando é um que encontrei no Php.net:
<?php
// ensure $dir ends with a slash
function delTree($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );
}
?>
Solução
Eu encontrei uma versão aprimorada da função de http://www.php.net/rmdir Isso requer Php5.
- Esta função usa
DIRECTORY_SEPARATOR
ao invés de/
. PHP defineDIRECTORY_SEPARATOR
como o caractere adequado para o sistema operacional em execução ('/' ou ''). - A localização do diretório não precisa terminar com uma barra.
- A função retorna
true
oufalse
na conclusão.
function deleteDirectory($dir) { if (!file_exists($dir)) return true; if (!is_dir($dir)) return unlink($dir); foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false; } return rmdir($dir); }
Outras dicas
Qual sistema operacional e versão você está usando?
Você precisa corrigir os caminhos para o diretório e os arquivos.
// ensure $dir ends with a slash
function delTree($dir) {
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $dir.$file );
else
unlink( $dir.$file );
}
rmdir( $dir );
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow