Ir para conteúdo
Fórum Script Brasil
  • 0

Criar diretorio e copiar arquivos e pasta de outro diretorio para o no


Igor Abdo

Pergunta

Consegui programar como mostra abaixo uma maneira de criar um diretório no servidor, ler arquivos de outro diretório e copia-los para o diretório criado. Mas quando criei sub-diretórios no diretório que desejo copiar, retorna o seguinte erro na hora da copia: Call to undefined function copy_dir()

<?
    $dirname = "teste";
    function copiar_diretorio($diretorio, $destino, $ver_acao = false){
      if ($destino{strlen($destino) - 1} == '/'){
         $destino = substr($destino, 0, -1);
        }
      if (!is_dir($destino)){
         if ($ver_acao){
            echo "Criando diretorio {$destino}\n";
            }
         mkdir($destino, 0755);
      }
        
      $folder = opendir($diretorio);
        
      while ($item = readdir($folder)){
         if ($item == '.' || $item == '..'){
            continue;
            }
         if (is_dir("{$diretorio}/{$item}")){
            copy_dir("{$diretorio}/{$item}", "{$destino}/{$item}", $ver_acao);
         }else{
            if ($ver_acao){
               echo "Copiando {$item} para {$destino}"."\n";
            }
            copy("{$diretorio}/{$item}", "{$destino}/{$item}");
            }
      }
   }
   
   /////////
   copiar_diretorio('data/theme', '../'. $dirname .'', true);
?>

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Não existe nenhuma função chamada copy_dir no PHP.

Certo, mas porque quando deixo somente arquivos no diretório "data/theme" à serem copiados, o script copia e cria o diretório "teste", copia os arquivos dentro do diretório "data/theme"? Apenas quando existem sub_pastas no diretório que preciso copiar que o erro retorna.

Editado por Igor Abdo
Link para o comentário
Compartilhar em outros sites

  • 0
Consegui programar como mostra abaixo uma maneira de criar um diretório no servidor, ler arquivos de outro diretório e copia-los para o diretório criado. Mas quando criei sub-diretórios no diretório que desejo copiar, retorna o seguinte erro na hora da copia: Call to undefined function copy_dir()

<?
    $dirname = "teste";
    function copiar_diretorio($diretorio, $destino, $ver_acao = false){
      if ($destino{strlen($destino) - 1} == '/'){
         $destino = substr($destino, 0, -1);
        }
      if (!is_dir($destino)){
         if ($ver_acao){
            echo "Criando diretorio {$destino}\n";
            }
         mkdir($destino, 0755);
      }
        
      $folder = opendir($diretorio);
        
      while ($item = readdir($folder)){
         if ($item == '.' || $item == '..'){
            continue;
            }
         if (is_dir("{$diretorio}/{$item}")){
            copy_dir("{$diretorio}/{$item}", "{$destino}/{$item}", $ver_acao);
         }else{
            if ($ver_acao){
               echo "Copiando {$item} para {$destino}"."\n";
            }
            copy("{$diretorio}/{$item}", "{$destino}/{$item}");
            }
      }
   }
   
   /////////
   copiar_diretorio('data/theme', '../'. $dirname .'', true);
?>
olá tudo bem, utilize o seguinte codigo, ele vai te ajudar, ele copia os arquivos e pasta dentro de um pasta logo você deve indicar o nome da pasta que ficar os arquivos finais.
<?php

function rrmdir($Dir_destino) {
  if (is_dir($Dir_destino)) {
    $files = scandir($$Dir_destino);
    foreach ($files as $file)
    if (is_dir($Dir_destinho/$Dir_Origem)){ if ($file != "." && $file != "..") rrmdir("$Dir_destinho/$file"); }else{
    if ($file != "." && $file != "..") rrmdir("$Dir_destinho/$file");
    }
    rmdir($dir);
  }
  else if (file_exists($dir)) unlink($dir);
}


function rcopy($src, $dst) {
  if (file_exists($dst)) rrmdir($dst);
  if (is_dir($src)) {
    mkdir($dst);
    $files = scandir($src);
    foreach ($files as $file)
    if ($file != "." && $file != "..") rcopy("$src/$file", "$dst/$file");
  }
  else if (file_exists($src)) copy($src, $dst);
}

/* exemplo de uso quero copiar a pasta pasta1 para a pasta2 então coloco /pasta1 para que o nome 
fique igual. */

rcopy("pasta1","pasta2/pasta1");
?>

até mais.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...