ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
974
974
EMPFEHLEN
-
17.12.09 18:13 #1Jörgi15 Tutorials.de Gastzugang
Hallo zusammen,
ich habe ein Skript, das ein Datenbank-Backup ausführen soll.
Nachdem der Befehl ausgeführt wurde, möchte ich überprüfen, ob alles geklappt hat.
Wie geht das?
Ich habe bis jetzt mehrere Möglichkeiten durchgespielt:
$ausgabe = passthru('C:/xampplite/mysql/bin/mysqldump -u ' . $db_username . ' -p' . $db_password . ' -h ' . $db_host. ' ' . $db . ' > C:/dump.sql, $fp);
Ergebnis: $ausgabe ist immer leer, $fp ist immer 1 (auch wenn ich z.B. den Pfad so verändere, dass die Datei nicht gefunden wird).
oder
$ausgabe = exec('C:/xampplite/mysql/bin/mysqldump -u ' . $db_username . ' -p' . $db_password . ' -h ' . $db_host. ' ' . $db . ' > C:/dump.sql, $fp);
Ergebnis: $ausgabe ist immer leer, $fp nimmt untersch. Werte an: 256 bei Fehler, mal auch 255...
Bei Aufruf einer nicht vorhandenen Datei ist es 1 (und genau so bei erfolgreicher Ausführung).
-
Hi,
die frage wäre erstmal was die Rückgabewerte von mysqldump auf windows ist?
Bei unix shell apps ist klar, wenn nix zurückkommt ist alles super gelaufen.
Wie das bei Windows ist wage ich nicht vorherzusagen ohne die Mysql-,PHP,Windows - Version zu kennen.
Im allgemeinen würde ich dir von einer php - basierten ausführung erstmal pauschal abraten, im einzelfall kann es durchaus Sinn machen aber in der Masse ist so ein Backup über einen Webserver ein echtes Sicherheitsrisiko
.
zb könnte man dieses auf deine bedürfnissen anpassen:
http://teamtutorials.com/windows-tut...-backup-script
un diese Dateien wenn es den sein muss per webserver zur verfügung stellen.
gruß
katoasanGive a man some Code and you shut him up for a day. Teach a man to code and you silence him for a lifetime.
www.katoware.de
-
20.12.09 00:51 #3Jörgi15 Tutorials.de Gastzugang
Hi katoasan,
nene, der Server läuft unter Linux!
Ich hab oben nur Windows-Pfade gepostet, weil ich hier auf Windows entwickle (ich dachte das wäre für die Rückgabewerte egal...).
Aber ich brauch es für ein Linux-System.
Also, wenn ich das richtig verstehe, gibt exec(mysqldump ... , $fp); unter Linux etwas anderes zurück als unter Windows?
Na super...
Du sagst, wenn es geklappt hat, ist $fp nach der Ausführung unter Linux leer?
Oder allgemein: Gibt es dasgleiche zurück, wie wenn ich mysqldump einfach auf der Shell ausführe?
Zu der anderen Frage: Ich habe bereits ein Shell-Skript, das das erledigt, aber ich möchte den Code über ein PHP-basiertes GUI für den Anwender einfacher konfigurierbar machen.
Wo genau siehst du da ein Sicherheitsproblem? Die Backups liegen außerhalb des Webroot...
Viele Grüße
Jörg
-
Hi,
exec, passthtru system machen einen call auf einen Systemfunktion daher kann in ungünstigen Fällen Anwender - Code im Kontext des Webserver - Users ausgeführt werden. Das ist solange kein Problem, wie man nur nette Anweder hat
na das kommt auf die Parameter an eine Vobose - Flag macht auch $fp vollDu sagst, wenn es geklappt hat, ist $fp nach der Ausführung unter Linux leer?
JaOder allgemein: Gibt es dasgleiche zurück, wie wenn ich mysqldump einfach auf der Shell ausführe?
wenn es ein linuxsystem ist würde ich das Backup immer als cron laufen lassen. Vor allem kann das in eine rechtelosen Useraccount laufen.
warum schreibst du die nicht in die DB dann kann das Backupscript die da auslesen Zugriff auf die DB hat es ja eh.Zu der anderen Frage: Ich habe bereits ein Shell-Skript, das das erledigt, aber ich möchte den Code über ein PHP-basiertes GUI für den Anwender einfacher konfigurierbar machen.
Gruß
katosanGive a man some Code and you shut him up for a day. Teach a man to code and you silence him for a lifetime.
www.katoware.de
-
20.12.09 22:42 #5Jörgi15 Tutorials.de Gastzugang
Danke!
Wenn ich "mysqldump -v" verwende, werden alle möglichen Infos ausgegeben, aber so detailliert brauch ich es eigentlich gar nicht. Mir reicht es, den Fall "Alles OK" von "Irgendein Fehler" unterscheiden zu können.na das kommt auf die Parameter an eine Vobose - Flag macht auch $fp voll
mysqldump gibt ohne den Parameter -v auf der Shell unter Linux folgendes aus:
- Wenn Host, DB-Benutzer oder Passwort falsch sind: "mysqldump: Got error 1045: Access denied for user..."
- Wenn falscher Datenbankname: "mysqldump: Got error: 1044: Access denied for user..."
- Wenn alles OK: nichts.
Also müsste es klappen, wenn ich exec('mysqldump...', $fp); nutze und dann prüfe, ob $fp leer ist:
PHP-Code:$fp = '';
exec('mysqldump -h ......', $fp);
if(empty($fp)) {
return TRUE; # alles OK
} else {
return FALSE; # Fehler!
}
Was soll ich in die DB schreiben? Das Skript liest alle Angaben für den mysqldump-Aufruf aus einer Konfigurationsdatei ein. Da kann der Benutzer nichts verändern.warum schreibst du die nicht in die DB dann kann das Backupscript die da auslesen Zugriff auf die DB hat es ja eh. ... Das ist solange kein Problem, wie man nur nette Anweder hat
Der Benutzer soll nur noch den Zeitpunkt bzw. die Häufigkeit festlegen können.
Das sollte doch kein Problem sein, oder?
-
Give a man some Code and you shut him up for a day. Teach a man to code and you silence him for a lifetime.
www.katoware.de
-
26.12.09 17:08 #7Jörgi15 Tutorials.de Gastzugang
Jo, da steht es auch so schon drin, dafür ist die Datei schließlich da.

Vielen Dank für Deine Hilfe!
Ähnliche Themen
-
mit exec oder passthru Programm bricht mitten in der Ausführung ab
Von gaengsterbruth im Forum PHPAntworten: 4Letzter Beitrag: 28.08.08, 18:47 -
exec / passthru
Von Philipp_Frank im Forum PHPAntworten: 2Letzter Beitrag: 09.03.08, 23:11 -
passthru / exec / system => psexec
Von FritzTheCat im Forum PHPAntworten: 0Letzter Beitrag: 16.11.07, 15:41 -
Sytemaufrufe system/passthru direkt im Browser anzeigen
Von Soapp im Forum PHPAntworten: 2Letzter Beitrag: 06.04.07, 10:43 -
mysqldump exec() oder passthru()
Von saimoto im Forum PHPAntworten: 1Letzter Beitrag: 02.09.04, 16:06





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren