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.

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.


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


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


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";
}
?>

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
?>

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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.