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.

Cliquez sur Upvote
la source

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

Pascal MARTIN
la source
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

Dizzi
la source
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
13

copie le fera. Veuillez consulter le manuel php . Une simple recherche Google devrait répondre à vos deux dernières questions;)

cweinberger
la source
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";
}
?>
Mukesh Jakhar
la source
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
?>
Yogendra - Développeur e-commerce
la source
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 ...

Makhi Ngubane
la source
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.

Éclipse
la source