Como copiar um arquivo de um diretório para outro usando PHP?

158

Dizer que tenho um arquivo test.phpno foodiretório, bem como bar. Como posso substituir bar/test.phppelo foo/test.phpuso PHP? Estou no Windows XP, uma solução multiplataforma seria ótima, mas o Windows é o preferido.

Click Voto a favor
fonte

Respostas:

285

Você poderia usar a copy()função:

// Will copy foo/test.php to bar/test.php
// overwritting it if necessary
copy('foo/test.php', 'bar/test.php');


Citando algumas frases relevantes de sua página de manual:

Faz uma cópia da origem do arquivo para dest.

Se o arquivo de destino já existir, ele será substituído.

Pascal MARTIN
fonte
8
Cria copy( 'foo/test.php', 'bar/test.php' )o bardiretório se ele ainda não existe?
henrywright
1
Não @henrywright, ele não cria diretórios em si. Você precisa fazer isso manualmente. verifique-o no manual do php
Haseeb Zulfiqar
25

Você pode usar a função rename () :

rename('foo/test.php', 'bar/test.php');

No entanto, isso moverá o arquivo não copiado

Dizzi
fonte
22
Eu me pergunto por que o chamado esta função de mudança de nome e nota de movimento ou algo
themhz
@ thhemis Eu também gostaria que eles tivessem nomeado a função move. Seria intuitivo se alguém tivesse uma pequena exposição ao linux.
Fr0zenFyr
4
@themis porque rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh
13

cópia fará isso. Por favor, verifique o manual php . A pesquisa simples do Google deve responder às suas duas últimas perguntas;)

cweinberger
fonte
8

Você pode copiar e colar isso irá ajudá-lo

<?php
$file = '/test1/example.txt';
$newfile = '/test2/example.txt';
if(!copy($file,$newfile)){
    echo "failed to copy $file";
}
else{
    echo "copied $file into $newfile\n";
}
?>
Mukesh Jakhar
fonte
7

Melhor maneira de copiar todos os arquivos de uma pasta para outra usando PHP

<?php
$src = "/home/www/example.com/source/folders/123456";  // source folder or file
$dest = "/home/www/example.com/test/123456";   // destination folder or file        

shell_exec("cp -r $src $dest");

echo "<H2>Copy files completed!</H2>"; //output when done
?>
Yogendra - Desenvolvedor de comércio eletrônico
fonte
1

Oi pessoal queria também adicionar sobre como copiar usando uma cópia dinâmica e colar.

digamos que não sabemos a pasta real que o usuário criará, mas sabemos nessa pasta para a qual precisamos copiar os arquivos, para ativar algumas funções como excluir, atualizar, exibir etc.

você pode usar algo assim ... Eu usei esse código em um projeto complexo no qual estou atualmente ocupado. eu mesmo construí-o porque todas as respostas que obtive na internet estavam me dando um erro.

    $dirPath1 = "users/$uniqueID"; #creating main folder and where $uniqueID will be called by a database when a user login.
    $result = mkdir($dirPath1, 0755);
            $dirPath2 = "users/$uniqueID/profile"; #sub folder
            $result = mkdir($dirPath2, 0755);
                $dirPath3 = "users/$uniqueID/images"; #sub folder 
                $result = mkdir($dirPath3, 0755);
                    $dirPath4 = "users/$uniqueID/uploads";#sub folder
                    $result = mkdir($dirPath4, 0755);
                    @copy('blank/dashboard.php', 'users/'.$uniqueID.'/dashboard.php');#from blank folder to dynamic user created folder
                    @copy('blank/views.php', 'users/'.$uniqueID.'/views.php'); #from blank folder to dynamic user created folder
                    @copy('blank/upload.php', 'users/'.$uniqueID.'/upload.php'); #from blank folder to dynamic user created folder
                    @copy('blank/delete.php', 'users/'.$uniqueID.'/delete.php'); #from blank folder to dynamic user created folder

Eu acho que o Facebook ou o Twitter usa algo assim para criar cada nova dinâmica de painel do usuário ...

Makhi Ngubane
fonte
0

Você pode usar renomear () e copiar ().

Costumo preferir usar a renomeação se não precisar mais que o arquivo de origem permaneça em seu local.

Eclipse
fonte