Ich versuche, mehrere Dateien von einer Domäne auf einem Webserver zu einem anderen zu kopieren mit Kopie() und eine Liste von Dateien durchläuft, aber es kopiert nur die letzte Datei in der Liste.Verwenden Sie copy() in einer foreach-Schleife, um mehrere Dateien zu kopieren. Php
Hier ist der Inhalt von Dateien-list.txt:
/templates/template.php
/admin/admin.css
/admin/codeSnippets.php
/admin/editPage.php
/admin/index.php
/admin/functions.php
/admin/style.php
/admin/editPost.php
/admin/createPage.php
/admin/createPost.php
/admin/configuration.php
Dieses Skript wird auf der Website, dass ich versuche, um die Dateien zu kopieren. Hier ist das Skript:
$filesList = file_get_contents("http://copyfromhere.com/copythesefiles/files-list.txt");
$filesArray = explode("\n", $filesList);
foreach($filesArray as $file) {
$filename = trim('http://copyfromhere.com/copythesefiles' . $file);
$dest = "destFolder" . $file;
if([email protected]($filename, $dest))
{
$errors= error_get_last();
echo "COPY ERROR: ".$errors['type'];
echo "<br />\n".$errors['message'];
} else {
echo "$filename copied to $dest from remote!<br/>";
}
}
Ich erhalte die bestätigende Nachricht für jede Datei einzeln nur, wie ich soll, aber wenn ich das Verzeichnis überprüfen, nur die letzte Datei von Dateien-list.txt ist da. Ich habe versucht, die Reihenfolge zu ändern, daher weiß ich, dass das Problem im Skript liegt, nicht in einer einzelnen Datei.
Die Ausgabe aus der Echo Aussagen sieht ungefähr so aus:
http://copyfromhere.com/copythesefiles/admin/admin.css copied to updates/admin/editPage.php from remote!
http://copyfromhere.com/copythesefiles/admin/admin.css copied to updates/admin/editPost.php from remote!
http://copyfromhere.com/copythesefiles/admin/admin.css copied to updates/admin/index.php from remote!
Etc
Ich würde empfehlen, zuerst das '@' vor der Kopie zu entfernen, da Sie keinen legitimen Grund haben, Warnungen/Fehler hier zu unterdrücken. Als nächstes überprüfen Sie das PHP-Fehlerprotokoll auf Ihrem Server, um zu sehen, ob Sie irgendwelche Hinweise erhalten. –
Die 'foreach'-Schleife wird nie geschlossen, ich nehme an, dass es in Ihrem tatsächlichen Code ist? –
Gutes Auge. Ich habe vergessen, die "foreach" im obigen Code zu schließen, aber ich habe diesen Fehler nicht im eigentlichen Code gemacht. – Ethan