Come copiare un file da una directory all'altra usando PHP?


158

Di 'che ho anche un file test.phpnella foodirectory bar. Come posso sostituire bar/test.phpcon l' foo/test.phputilizzo PHP? Sono su Windows XP, una soluzione multipiattaforma sarebbe ottima ma Windows preferiva.

Risposte:


285

È possibile utilizzare la copy()funzione:

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


Citando un paio di frasi rilevanti dalla sua pagina di manuale:

Fa una copia dell'origine del file a dest.

Se il file di destinazione esiste già, verrà sovrascritto.


8
Non copy( 'foo/test.php', 'bar/test.php' )creare la bardirectory se non esiste già?
henrywright,

1
No @henrywright, non crea le directory stesse. Devi farlo manualmente. controllalo sul manuale di php
Haseeb Zulfiqar,

25

È possibile utilizzare la funzione rename () :

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

Questo tuttavia sposta il file non copiandolo


22
Mi chiedo perché il nome di questa funzione rinomina e nota mossa o qualcosa del genere
themhz,

@themis Anch'io vorrei che avessero chiamato la funzione move. Sarebbe intuitivo se si ha una piccola esposizione a Linux.
Fr0zen,

4
@themis because rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh,


8

Puoi copiare e incollare questo ti aiuterà

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

Il modo migliore per copiare tutti i file da una cartella all'altra 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

Ciao ragazzi volevo anche aggiungere come copiare usando una copia e incolla dinamica.

diciamo che non conosciamo la cartella reale che l'utente creerà, ma sappiamo che in quella cartella abbiamo bisogno di copiare i file, per attivare alcune funzioni come eliminare, aggiornare, visualizzare ecc.

puoi usare qualcosa del genere ... Ho usato questo codice in uno dei progetti complessi su cui sono attualmente impegnato. l'ho costruito da solo perché tutte le risposte che ho ricevuto su Internet mi davano un errore.

    $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

Penso che Facebook o Twitter utilizzino qualcosa del genere per costruire ogni nuova dashboard dinamica dell'utente ....


0

Puoi usare sia rename () che copy ().

Tendo a preferire l'uso di rinomina se non ho più bisogno che il file sorgente rimanga nella sua posizione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.