Comment copier un fichier d'un répertoire à un autre en utilisant PHP?


158

Disons que j'ai un fichier test.phpdans le foorépertoire ainsi que bar. Comment puis-je remplacer bar/test.phppar une foo/test.phputilisation PHP? Je suis sur Windows XP, une solution multiplateforme serait géniale mais Windows préfère.

Réponses:


285

Vous pouvez utiliser la copy()fonction:

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


Citant quelques phrases pertinentes de sa page de manuel:

Effectue une copie du fichier source vers dest.

Si le fichier de destination existe déjà, il sera écrasé.


8
Crée-t-il copy( 'foo/test.php', 'bar/test.php' )le barrépertoire s'il n'existe pas déjà?
henrywright

1
Non @henrywright, il ne crée pas de répertoires lui-même. Tu dois le faire manuellement. vérifiez-le sur le manuel php
Haseeb Zulfiqar

25

Vous pouvez utiliser la fonction rename () :

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

Cela déplacera cependant le fichier et non la copie


22
Je me demande pourquoi le nom de cette fonction renommer et noter le mouvement ou quelque chose
themhz

@themis J'aurais aimé aussi qu'ils aient nommé la fonction move. Ce serait intuitif si l'on avait une petite exposition Linux.
Fr0zenFyr

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


8

Vous pouvez copier et coller cela vous aidera

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

Meilleur moyen de copier tous les fichiers d'un dossier à un autre en utilisant 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

Salut les gars voulaient également ajouter comment copier en utilisant une copie et un collage dynamiques.

disons que nous ne connaissons pas le dossier réel que l'utilisateur créera, mais nous savons que dans ce dossier, nous avons besoin de fichiers à copier, pour activer certaines fonctions telles que supprimer, mettre à jour, afficher, etc.

vous pouvez utiliser quelque chose comme ça ... J'ai utilisé ce code dans l'un des projets complexes sur lesquels je suis actuellement occupé. Je viens de le construire moi-même parce que toutes les réponses que j'ai obtenues sur Internet me donnaient une erreur.

    $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

Je pense que Facebook ou Twitter utilise quelque chose comme ça pour créer chaque nouveau tableau de bord utilisateur dynamique ...


0

Vous pouvez utiliser à la fois renommer () et copier ().

J'ai tendance à préférer utiliser renommer si je n'ai plus besoin que le fichier source reste à son emplacement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.