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


Digamos que tengo un archivo test.php en el directorio foo así como bar. ¿Cómo puedo reemplazar bar/test.php por foo/test.php usando PHP? Estoy en Windows XP, una solución multiplataforma sería genial, pero Windows preferido.

Author: Thusitha Sumanadasa, 2011-04-24

7 answers

Podría utilizar el 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 frases relevantes de su página de manual:

Hace una copia del archivo fuente para dest.

Si el destino el archivo ya existe, será sobrescribir.

 242
Author: Pascal MARTIN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-24 19:43:08

Puedes usar la función rename():

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

Sin embargo, esto hará que mueva el archivo no se copie

 24
Author: Dizzi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-24 21:46:51

Copiar hará esto. Por favor revise el php-manual . Simple búsqueda de Google debe responder a sus dos últimas preguntas;)

 11
Author: cweinberger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-24 21:05:26

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
?>
 4
Author: Yogendra - eCommerce Developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-02 17:24:19

Usted puede copiar y pasado esto le 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";
     }
?>`

Si desea copiar varios o (archivos ilimitados) visite enlace: http://www.phpkida.com/php-tutorial/copy-multiple-files-from-one-folder-to-another-php /

 1
Author: Mukesh Jakhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-19 13:37:49

Puedes usar tanto rename() como copy().

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

 0
Author: Eclipse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-16 14:47:43

Hola chicos quería añadir también en cómo copiar utilizando una copia dinámica y pegar.

Digamos que no sabemos la carpeta real que el usuario creará, pero sabemos que en esa carpeta necesitamos archivos para ser copiados, para activar alguna función como eliminar, actualizar, vistas, etc.

Puedes usar algo como esto... Utilicé este código en uno de los complejos proyectos en los que actualmente estoy ocupado. lo construí yo mismo porque todas las respuestas que obtuve en Internet me estaban dando 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 utiliza algo como esto para construir cada nuevo panel de usuario dinámico....

 0
Author: Makhi Ngubane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-26 07:56:50