Jump to content
Fórum Script Brasil
  • 0

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


Igor Abdo

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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.

Edited by Igor Abdo
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...