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

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


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


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


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

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

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


0

Puede usar rename () y copy ().

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.