PHP-Script -Backup über FTP
- Verdindung zum FTP-Server wird erfolgreich aufgebaut
- Dateien werden erfolgreich eingelesen
- Ziel-pfad wird erfolgreich zusammengebastelt
-> Upload funktioniert nicht (keine Fehlermeldung, nur ein Warning)
Huhu liebe PHP-Freaks und was sich hier noch so alles tummelt :P
Ich hab mir ein Script gebastelt, welches ein lokales Verzeichnis komplett rekursiv einließt und dieses auf einen FTP-Server hochladen soll. Sozusagen als Backup, die Verzeichnisstruktur soll dann logischer Weise auf dem FTP-Server gleich abgebildet sein.
Es ist vielleicht ein bisschen verwirrend und nicht optimal (z.B. Zeichen ersetzen anstatt danach zu exploden usw.), aber seht selbst:
Ich habe jetzt schon mehrere Stunden mich dran probiert. Habe die Zielpfade umgeschrieben, das komplette Verzeichnis manuell abgebildet auf dem FTP-Server... ich weiß jetzt nicht mehr weiter.
Die Dateien werden nicht hochgeladen und eine Fehlermeldung bleibt ebenfalls aus. Nur ein Warning kommt durch:
"PHP Warning: ftp_put(): PORT command successful. in D:\ftp.php on line 73"
Seht Ihr vielleicht etwas, was ich übersehen hab(en) könnte? :S
Dankeschön und ein schönes WE euch allen!
Nira
- Dateien werden erfolgreich eingelesen
- Ziel-pfad wird erfolgreich zusammengebastelt
-> Upload funktioniert nicht (keine Fehlermeldung, nur ein Warning)
Huhu liebe PHP-Freaks und was sich hier noch so alles tummelt :P
Ich hab mir ein Script gebastelt, welches ein lokales Verzeichnis komplett rekursiv einließt und dieses auf einen FTP-Server hochladen soll. Sozusagen als Backup, die Verzeichnisstruktur soll dann logischer Weise auf dem FTP-Server gleich abgebildet sein.
Es ist vielleicht ein bisschen verwirrend und nicht optimal (z.B. Zeichen ersetzen anstatt danach zu exploden usw.), aber seht selbst:
<?php
function dir_rekursiv($verzeichnis) {
$handle = opendir($verzeichnis);
while ($datei = readdir($handle)) {
if ($datei != "." && $datei != "..") {
if (is_dir($verzeichnis.$datei)) { // Wenn Verzeichniseintrag ein Verzeichnis ist
$arr =dir_rekursiv($verzeichnis.$datei.'\\'); // Erneuter Funktionsaufruf, um das aktuelle Verzeichnis auszulesen
foreach ($arr as $key => $value) {
$all = $value;
}
}
else { // Wenn Verzeichnis-Eintrag eine Datei ist, diese ausgeben
$all = $verzeichnis.$datei;
}
}
}
closedir($handle);
return $all;
}
/* ********************************* */
$ftp_server = "ftp.server.de";
$benutzername = "user";
$passwort = "pwd";
$quelle = "D:\\sys\\backup\\"; // am ende muss \\ stehen!
$ziel = "/httpdocs/backup"; // unsicher ob Slash oder backslash - am Ende KEIN Back-/Slash
/* ********************************* */
$fehler = "";
$next = false;
$n = "\n";
$quellcount = strlen($quelle);
$connection_id = ftp_connect($ftp_server);
$login_result = ftp_login($connection_id, $benutzername, $passwort);
ftp_pasv($connection_id, true);
if ((!$connection_id) || (!$login_result)) {
$fehler = $fehler.$n."Ftp-Verbindung konnte nicht hergestellt werden!";
$fehler = $fehler.$n."Verbindung mit [".$ftp_server."] als Benutzer [".$benutzername."] nicht möglich!";
$next = false;
}
else {
$fehler = $fehler.$n."Verbindung hergestellt mit [".$ftp_server."] als Benutzer [".$benutzername."]".$n;
$next = true;
}
if ($next) {
$fullpaths = dir_rekursiv($quelle); // Verzeichnis komplett einlesen
foreach ($fullpaths as $key => $value) {
$nziel = substr($value, $quellcount); // Ab hier wird das \\ zum /
$aziel = explode("\\", $nziel);
$kziel = "";
$rziel = "";
for ($i=0; $i < count($aziel); $i++) {
$kziel = $kziel."/".$aziel[$i];
}
$rziel = $ziel.$rziel.$kziel."\n";
echo $rziel."\n"; // Testausgabe des
$upload = ftp_put($connection_id, $rziel, $value, FTP_ASCII);
if (!$upload) {
$fehler = $fehler.$n." - Fehler -> upload";
}
}
}
ftp_quit($connection_id);
echo $fehler;
?>
Ich habe jetzt schon mehrere Stunden mich dran probiert. Habe die Zielpfade umgeschrieben, das komplette Verzeichnis manuell abgebildet auf dem FTP-Server... ich weiß jetzt nicht mehr weiter.
Die Dateien werden nicht hochgeladen und eine Fehlermeldung bleibt ebenfalls aus. Nur ein Warning kommt durch:
"PHP Warning: ftp_put(): PORT command successful. in D:\ftp.php on line 73"
Seht Ihr vielleicht etwas, was ich übersehen hab(en) könnte? :S
Dankeschön und ein schönes WE euch allen!
Nira
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141862
Url: https://administrator.de/contentid/141862
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Niranda Sandra Laura Monique,
schau mal hier: http://www.php.net/manual/en/function.ftp-put.php#89986
könnte es daran liegen?
Gruß
Snow
$upload = ftp_put($connection_id, $rziel, $value, FTP_ASCII);
schau mal hier: http://www.php.net/manual/en/function.ftp-put.php#89986
könnte es daran liegen?
Gruß
Snow