PHP-Code:
//Funktion kopiert per cUrl Dateien
function ftp_copy ($x, $y) {
global $server, $benutzer, $passwort, $tempdir, $ds;
//Schritt 1: auf Remote-Server einloggen und Datei herunterladen
$url = "ftp://" . $benutzer . ":" . $passwort . "@" . $server . ":21" . $x;
// $z wird am Ende von Schritt 1 jetzt immer als 'false' angesehen :-(
$z = slash($tempdir, "copy_" . substr(strrchr($x, $ds), 1));
// $z wird geschrieben und später in Schritt 2 weiterverarbeitet
$fp = fopen($z, "wb");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_UPLOAD, 0);
curl_setopt($ch, CURLOPT_FILE, $fp);
if (curl_exec($ch) !== false) {
curl_close($ch);
fclose($fp);
// Kein 'return', da sonst Funktion beendet, $z immer 'false', auch wenn Download erfolgt ist :-(
} else {
curl_close($ch);
fclose($fp);
// Wenn Download nicht geklappt hat, Datei löschen und Funktion beenden
unlink($z);
return false;
}
// Schritt 2: auf Remote-Server einloggen und Datei hochladen
$url2 = "ftp://" . $benutzer . ":" . $passwort . "@" . $server . ":21" . $y;
// $z lesen
$fp2 = fopen($z, "rb");
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url2);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_UPLOAD, 1);
curl_setopt($ch2, CURLOPT_INFILE, $fp2);
curl_setopt($ch2, CURLOPT_INFILESIZE, filesize($z));
if (curl_exec($ch2) !== false) {
curl_close($ch2);
fclose($fp2);
unlink($z);
// Funktion gibt 'true' aus, aber $z ist leer, nur der Dateiname wurde hochgeladen/kopiert
return true;
} else {
curl_close($ch2);
fclose($fp2);
unlink($z);
return false;
}
}
Einen Kommentar schreiben: