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;
}
Pergunta
diogoleter
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
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.