Hey!
Ich hab schon wieder Probleme bei meinem Backupscript.
Ich poste einfach mal mein Script und erklär ein bisschen was dazu:
Ich hoffe der Code ist so weit klar..
Nun zu meinen Problemen:
1. Anscheinend wird mit diesem Code kein zip-Archiv mehr erstellt. Laut der if-Bedingung ist $res === true, der jeweilige Text steht auch in der chronik.ini, aber es wird halt keine Datei erstellt. Einen Fehler bekomme ich übrigens erst bei der rename-Funktion..
Komisch ist, dass das Problem erst von "heute auf morgen" erschienen ist. Am Anfang hat noch alles geklappt...
2. Bei jedem Aufruf von fopen(), bekomme ich folgende Warnungen:
Auch dieser Fehler erscheint erst seit kurzem.
Weis vll jemand an was das alles liegen könnte
Vielen Dank schonmal
Lg LoD123
Ich hab schon wieder Probleme bei meinem Backupscript.
Ich poste einfach mal mein Script und erklär ein bisschen was dazu:
PHP:
<?
include("secure/pw.php"); // Enthält verschlüsseltes Passwort.
// Es gibt verschlüsselte Modi, die festlegen, welche Dateien ins Archiv aufgenommen werden.
if (isset($_GET['mode'])) {
$mode = $_GET['mode'];
} else {
$mode = 0;
}
$starttime = time(); // Um auszugeben, wie langs dauert
// neue ZIP-Datei erstellen
$zip = new ZipArchive;
$res = $zip->open('secure/BACKUP/backup_tmp.zip', ZipArchive::CREATE);
if ($res === TRUE) {
$chronik = "---Neues .zip-Archiv erstellt\n BACKUP beginnt\n Modus: ".$mode."\n\n";
} else {
exit;
}
// SQL-Backup machen
// Hier werden alle Datenbankstrukturen und -Inhalte in eine Datei geschrieben, funktioniert ohne Probleme
$chronik .= "Starte MySQL-Backup..\n";
include("secure/mysql_backup.php");
$chronik .= $mysql_chronik;
$chronik .= "MySQL-Backup beendet.\n\n";
/*
Hier wird Datei für Datei durchgegangen(natürlich auch alle Unterordner) und alles was nicht in der notBackup-Funktion enthalten ist, ins Archiv aufgenommen.
*/
// Daten durchsteppen und in ZIP-Archiv aufnehmen
$allDatas = scanDirectories(".",$allData);
$k=0;
$l=0;
for ($i=0;$i<count($allDatas);$i++) {
$file = substr($allDatas[$i],2);
if (notBackup($file,$mode)!=true) {
if ($zip->addFile($file,$file)==true) {
$chronik .= ($k+1).".) ".$file." erfolgreich hinzugefügt\n";
$k++;
}
} else {
$chronik .= "\t -- ".$file." aufgrund von notBackup() nicht hinzugefügt!\n";
$l++;
}
}
// ZIP-Datei schließen
$zip->close();
// Zum Wiederherstellen der Daten auf dem Webspace braucht man ein Passwort
// Das besteht aus einem statischen, von mir festgelegten Teil, den der User eingeben muss und aus der Größe und dem Änderungsdatum der backup-Datei um sicherzugehen, dass diese nicht manipuliert wurde.
$pwcheck_part[0] = md5(filemtime("secure/BACKUP/backup.zip"));
$pwcheck_part[2] = filesize("secure/BACKUP/backup.zip");
// alte ZIP-Datei löschen
if (file_exists("secure/BACKUP/backup.zip") && file_exists("secure/BACKUP/backup_tmp.zip")) {
unlink ("secure/BACKUP/backup.zip");
}
// Neue ZIP-Datei umbennenen
rename("secure/BACKUP/backup_tmp.zip", "secure/BACKUP/backup.zip");
$chronik .= "\n\n---Dateien erfolgreich gezippt!---";
$passwort_de = base64_decode($passwort);
$passwort_part[0] = substr($passwort_de,0,32); // md5-verschlüsselte filemtime
$passwort_part[1] = substr($passwort_de,32,32); // md5-verschlüsseltes Passwort
$passwort_part[2] = substr($passwort_de,64); // filesize
if ($passwort_part[0]!=$pwcheck_part[0] || strlen($passwort_part[1])!=32 || $passwort_part[2]!=$pwcheck_part[2]) {
$chronik .= "\n\n!WARNING! zip-Datei war manipuliert!";
}
$passwort_neu = base64_encode(md5(filemtime("secure/BACKUP/backup.zip")).$passwort_part[1].filesize("secure/BACKUP/backup.zip"));
$file = fopen('secure/pw.php','w');
fwrite ($file, "<?\n");
fwrite ($file, '$passwort = "'.$passwort_neu.'";');
fwrite ($file, "\n?>");
fclose ($file);
$chronik .= "\n\n---Passwort erfolgreich geändert!---";
$chronik .= "\n\nBACKUP VOM ".date('d.m.Y')." ERFOLGREICH AUSGEFÜHRT!";
$endtime = time();
$dif = $endtime - $starttime;
$chronik .= "\nEs wurden ".$k." Dateien gesichert\n".$l." Daten aufgrund von notBackup() nicht gezippt.\nDauer: ".($dif)." Sekunden.";
$chronik .= "\n*************************************************\n\n";
echo $chronik;
$file = fopen('secure/BACKUP/chronik.ini','a');
fwrite($file,$chronik);
fclose($file);
?>
Ich hoffe der Code ist so weit klar..
Nun zu meinen Problemen:
1. Anscheinend wird mit diesem Code kein zip-Archiv mehr erstellt. Laut der if-Bedingung ist $res === true, der jeweilige Text steht auch in der chronik.ini, aber es wird halt keine Datei erstellt. Einen Fehler bekomme ich übrigens erst bei der rename-Funktion..
Komisch ist, dass das Problem erst von "heute auf morgen" erschienen ist. Am Anfang hat noch alles geklappt...
2. Bei jedem Aufruf von fopen(), bekomme ich folgende Warnungen:
aber nur auf meinem Webspace, lokal funktionierts.Warning: fopen(secure/pw.php) [function.fopen]: failed to open stream: Too many open files in ... on line ...
Warning: fwrite(): supplied argument is not a valid stream resource in ... reset.php on line ...
Warning: fwrite(): supplied argument is not a valid stream resource in ... reset.php on line ...
Warning: fwrite(): supplied argument is not a valid stream resource in ... reset.php on line ...
Warning: fclose(): supplied argument is not a valid stream resource in... reset.php on line ...
Auch dieser Fehler erscheint erst seit kurzem.
Weis vll jemand an was das alles liegen könnte
Vielen Dank schonmal
Lg LoD123