¿Cómo copiar un archivo de un directorio a otro usando PHP?

158

Digamos que también tengo un archivo test.phpen el foodirectorio bar. ¿Cómo puedo reemplazar bar/test.phpcon el foo/test.phpuso PHP? Estoy en Windows XP, una solución multiplataforma sería genial, pero se prefiere Windows.

Haga clic en Upvote
fuente

Respuestas:

285

Podrías usar la copy()función:

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


Citando un par de oraciones relevantes de su página de manual:

Hace una copia de la fuente del archivo a dest.

Si el archivo de destino ya existe, se sobrescribirá.

Pascal MARTIN
fuente
8
¿ copy( 'foo/test.php', 'bar/test.php' )Crea el bardirectorio si aún no existe?
henrywright
1
No @henrywright, no crea directorios por sí mismo. Tienes que hacerlo de forma manual. compruébalo en el manual de php
Haseeb Zulfiqar
25

Puede usar la función rename () :

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

Sin embargo, esto moverá el archivo no copia

Dizzi
fuente
22
Me pregunto por qué el nombre de esta función cambia el nombre y nota el movimiento o algo así
themhz
@themis Yo también desearía que hubieran nombrado la función move. Sería intuitivo si uno tiene una pequeña exposición a Linux.
Fr0zenFyr
44
@themis porque rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh
13

la copia hará esto. Por favor, consulte el manual de php . La búsqueda simple en Google debería responder a tus dos últimas preguntas;)

Cweinberger
fuente
8

Puedes copiar y pegar esto te ayudará

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

La mejor manera de copiar todos los archivos de una carpeta a otra 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 - Desarrollador de comercio electrónico
fuente
1

Hola chicos, también quería agregar cómo copiar usando una copia dinámica y pegar.

Digamos que no sabemos la carpeta real que el usuario creará, pero sabemos que en esa carpeta necesitamos copiar los archivos, para activar algunas funciones como eliminar, actualizar, vistas, etc.

puedes usar algo como esto ... Usé este código en uno de los proyectos complejos en los que actualmente estoy ocupado. Lo construí yo mismo porque todas las respuestas que obtuve en Internet me daban un error.

    $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

Creo que Facebook o Twitter usan algo como esto para construir cada nuevo panel de usuario dinámico ...

Makhi Ngubane
fuente
0

Puede usar rename () y copy ().

Tiendo a preferir usar renombrar si ya no necesito que el archivo fuente permanezca en su ubicación.

Eclipse
fuente