Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Windows system() Script Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.08.2006
    Beiträge
    25

    Windows system() Script Problem

    Hallo zusammen,

    bin schon voll am verzweifeln, hab gar nichts bei google gefunden und weis jetzt auch jetzt auch einfach nicht mehr weiter...

    Ich möchte gerne auf einem Windows Server ein BackUP einer MYSQL DB manuell starten:

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);

    $dbusr        "xxxxxx";
    $dbpwd        "xxxxxxxxxx"
    $dbhost    "localhost";
    $db          "dbxxx";
    $dbMySQLdump "C:/Programme/MySQL/MySQL Server 5.0/bin/mysqldump.exe";
    $dbsavepath  "X:/xxxxxxxxx/xxxxx/xxxxx";

    $usrname   "testuser";
    $date       date("d-m-y-H-i");

    // Datenbank Export
    system("$dbMySQLdump -u$dbusr -p$dbpwd -h $dbhost $db | gzip > $dbsavepath/$db-$usrname-$date.sql.gz"$return);

    if(
    $return == 0) { print " Datenbank wurde <b>erfolgreich</b> exportiert! "; } 
                else { print 
    " Datenbankexport <b>fehlgeschlagen</b>! "; }

    ?>
    Habe aber das Problem das kein Backup erstellt wird. Es wird auch keine Fehlermeldung ausgegeben. Weis auch nicht womit das zusammenhängen könnte.

    Hat jemand eine Idee? Würde mich echt freuen wenn mir wer helfen könne!
    Geändert von nachtengel06 (24-09-2007 um 13:00 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Könnte am leerzeichen im Pfad liegen. Ich kann mich erinnern damit auch mal probleme gehabt zu haben. Offensichlich will windows hier den Pfad in Anführungszeichen. Grundsätzlich würde ich auf die Leerzeichen verzichten.
    Weiterhin würde ich sicherstellen, dass der Savepath existiert.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  3. #3
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    In $return steht vermutlich nur der Rückgabewert von gzip und nicht von mysqldump.

    Hast du Mal versucht, genau den Befehl, den das PHP-Script zusammenbaut, manuell aufzurufen?

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.08.2006
    Beiträge
    25
    Danke erstmal für eure Hilfe!!

    @BLUESCREEN3D
    $return ist der Rückgabe wert für die Ausführung, also ob diese Erfolgreich war oder nicht. Den Befehl der zusammengestetzt wird von mir hab ich mir schon angesehen er sieht völlig okay aus.

    (Hier mal der Befehl ausgegebene Befehl! (wichtige Daten ersetzt mit xxxxxx))

    C:\Programme\MySQL\bin\mysqldump.exe -uroot -pxxxxxxxx -h localhost DBxxx | gzip > X:\xxxx\xxxxx\xxxxx\dbsave\db-Datum-username.gz


    @Turbohummel
    Hab den Pfad geändert (siehe oben), aber immernoch ohne Erfolg.

    Offensichlich will windows hier den Pfad in Anführungszeichen.
    Wie meinst du das in Anführungszeichen kannst du mir das als Bsp. geben?

    Frage für mich ist noch wie rum die Slashes müssen, habe die beiden Pfade bereits mit file_exists geprüft ob sie existieren - ohne Probleme egal wie rum die Slashes waren.... Nur ist es vielleicht für die Funktion nicht egal ?!!?!

    Der Sicherungspfad existiert (- geprüft).

    mit dem oben stehenden "Befehl" bekomme ich jetzt eine .gz Datei ausgegeben aber leider null Byte! Wenn ich mir $return ausgeben lasse bekomme ich eine 255 zurück, kann aber leider diesen "Fehlercode" nicht für mich sinnvoll nachvollziehen, finde leider auch bei php.net nichts.
    Wenn $return = 0 wird eine ausgabe erstellt.
    Geändert von nachtengel06 (25-09-2007 um 09:11 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Ich hab das Script mal bei mir getestet - gleiches Ergebnis. Kommt mir auch komisch vor.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  6. #6
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von nachtengel06 Beitrag anzeigen
    $return ist der Rückgabe wert für die Ausführung, also ob diese Erfolgreich war oder nicht.
    (...)
    Wenn ich mir $return ausgeben lasse bekomme ich eine 255 zurück
    Ne, das ist der Rückgabewert des ausgeführten Befehls.
    Aber gzip sollte kein 255 zurückgeben, sondern laut Manpage 0, 1 oder 2.

    Du könntest mal den Rückgabewert der Funktion system() überprüfen:
    Code:
    if (system(...) === false)
    	{
    	echo "error"
    	}

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •