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.

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.


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


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


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";
}
?>

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

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


0

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.