Wie kopiere ich eine Datei mit PHP von einem Verzeichnis in ein anderes?

158

Angenommen, ich habe eine Datei test.phpim fooVerzeichnis sowie bar. Wie kann ich ersetzen bar/test.phpmit foo/test.phpVerwendung PHP? Ich bin unter Windows XP, eine plattformübergreifende Lösung wäre großartig, aber Windows wird bevorzugt.

Klicken Sie auf Upvote
quelle

Antworten:

285

Sie könnten die copy()Funktion verwenden:

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


Zitieren Sie einige relevante Sätze aus der Handbuchseite:

Erstellt eine Kopie der Dateiquelle zu dest.

Wenn die Zieldatei bereits vorhanden ist, wird sie überschrieben.

Pascal MARTIN
quelle
8
Erstellt copy( 'foo/test.php', 'bar/test.php' )das barVerzeichnis, falls es noch nicht vorhanden ist?
Henrywright
1
Nein @henrywright, es werden keine Verzeichnisse selbst erstellt. Sie müssen es manuell tun. Überprüfen Sie es auf PHP-Handbuch
Haseeb Zulfiqar
25

Sie können die Funktion rename () verwenden:

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

Dadurch wird jedoch die nicht kopierte Datei verschoben

Dizzi
quelle
22
Ich frage mich, warum die benannte diese Funktion umbenennen und verschieben oder so
themhz
@themis Ich wünschte auch, sie hätten die Funktion benannt move. Es wäre intuitiv, wenn man ein wenig Linux-Belichtung hat.
Fr0zenFyr
4
@themis weil rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh
13

Kopie wird dies tun. Bitte überprüfen Sie das PHP-Handbuch . Die einfache Google-Suche sollte Ihre letzten beiden Fragen beantworten;)

cweinberger
quelle
8

Sie können kopieren und einfügen, um Ihnen zu helfen

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

Der beste Weg, um alle Dateien mit PHP von einem Ordner in einen anderen zu kopieren

<?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 - E-Commerce-Entwickler
quelle
1

Hallo Leute, wollte auch hinzufügen, wie man mit einem dynamischen Kopieren und Einfügen kopiert.

Angenommen, wir kennen nicht den tatsächlichen Ordner, den der Benutzer erstellen wird, aber wir wissen, dass in diesem Ordner Dateien kopiert werden müssen, um Funktionen wie Löschen, Aktualisieren, Ansichten usw. zu aktivieren.

Sie können so etwas verwenden ... Ich habe diesen Code in einem der komplexen Projekte verwendet, mit denen ich gerade beschäftigt bin. Ich baue es einfach selbst, weil alle Antworten, die ich im Internet bekam, mir einen Fehler gaben.

    $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

Ich denke, Facebook oder Twitter verwenden so etwas, um jede neue Benutzer-Dashboard-Dynamik aufzubauen ....

Makhi Ngubane
quelle
0

Sie können sowohl rename () als auch copy () verwenden.

Ich bevorzuge die Umbenennung, wenn die Quelldatei nicht mehr an ihrem Speicherort verbleiben soll.

Finsternis
quelle