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

Problemas com código para copiar pastas


diogoleter

Pergunta

Olá,

Encontrei este código no PHP manual, mas não estou conseguindo fazê-lo funcionar de forma correta.

Simplesmente informo a pasta de origem e a pasta de destino, ele faz a cópia da pasta de origem, mas também faz um loop copiando a pasta de destino várias vezes.

Segue abaixo o código:

function copydirr($fromDir,$toDir,$chmod=0757,$verbose=true){
        $errors=array();
        $messages=array();
        if (!is_writable($toDir))
            $errors[]='target '.$toDir.' is not writable';
        if (!is_dir($toDir))
            $errors[]='target '.$toDir.' is not a directory';
        if (!is_dir($fromDir))
            $errors[]='source '.$fromDir.' is not a directory';
        if (!empty($errors)){
            if ($verbose)
                foreach($errors as $err)
                    echo '<strong>Error</strong>: '.$err.'<br />';
            return false;
        }

        $exceptions=array('.','..');

        $handle=opendir($fromDir);
        while (false!==($item=readdir($handle)))
            if (!in_array($item,$exceptions)){

                $from=str_replace('//','/',$fromDir.'/'.$item);
                $to=str_replace('//','/',$toDir.'/'.$item);

                if (is_file($from)){
                    if (@copy($from,$to)){
                        chmod($to,$chmod);
                        touch($to,filemtime($from)); // to track last modified time
                        $messages[]='File copied from '.$from.' to '.$to;
                    } else
                        $errors[]='cannot copy file from '.$from.' to '.$to;
                    }
                if (is_dir($from)){
                    if (@mkdir($to)){
                        chmod($to,$chmod);
                        $messages[]='Directory created: '.$to;
                    } else
                        $errors[]='cannot create directory '.$to;
                        copydirr($from,$to,$chmod,$verbose);
                    }
                }
        closedir($handle);

        if ($verbose){
            foreach($errors as $err)
                echo '<strong>Error</strong>: '.$err.'<br />';
            foreach($messages as $msg)
                echo $msg.'<br />';
        }
        return true;
    }
Chamo a função da seguinte forma:
copydirr("../../../../public_data/subpasta_de_arquivos/nova_pasta/projetos_ano_2009/", "../../../../public_data/subpasta_de_arquivos/nova_pasta/para_copiar/");

O endereço da onde encontrei o código: http://ca.php.net/manual/en/function.copy.php

Obrigado!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...