Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankbackup mit Hilfe von system()

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankbackup mit Hilfe von system()

    Hallo Leute,

    ich hab mal wieder ein Problem. Und zwar geht es darum von einer Datenbank
    ein Backup anzulegen. Da die Datenbank sehr groß ist, soll das ganze soll über
    die Kommandozeile mit Hilfe der Funktion [man]system()[/man] laufen.

    Hier mal der Quelltext:
    PHP-Code:
        if (!is_dir("backup")) mkdir("backup"0777);
        
    $date date("G.i.s_d.m.Y");
        
    $dateiname $date."_".$DB_SRC['db_alt']."_backup.sql";
        
    $path "backup/";
        
    chmod("backup",0777); 
      
        echo 
    'mysqldump -h'.$DB_SRC['server'].' -u'.$DB_SRC['user'].' -p'.$DB_SRC['pass'].' '.$DB_SRC['db_alt'].' > '.$path.$dateiname;

        
    system('mysqldump -h'.$DB_SRC['server'].' -u'.$DB_SRC['user'].' -p'.$DB_SRC['pass'].' '.$DB_SRC['db_alt'].' > '.$path.$dateiname$retval);  
        
        if(
    $retval=="1"){
            echo 
    "Das Backup der Datenbank konnte nicht erstellt werden. Bitte überprüfen Sie Ihre Angaben.\n";
          exit();
        }
        else echo 
    "Das Backup der Datenbank wurde erfolgreich angelegt.\n"
    Das ganze funktioniert auch wunderbar. Aber leider nur lokal.
    Lade ich das ganze auf dem Server hoch und führe die Datei aus (php5 -f import.php), klappt das ganze nicht.

    Das Verzeichnis wird angelegt, aber das Dumpfile nicht.
    Ich erhalte immer die Meldung:
    Code:
    Datei oder Verzeichnis nicht vorhanden
    Wenn ich den mysqldump Befehl aber per Hand schreibe und ausführe,
    funktionierts auch.
    Weiß jemand was da falsch läuft?

  • #2
    eventuell ist die PHP-Funktion system() auf dem Server disabled. Schau Dir mal die php.ini dort an:

    Code:
    --- php.ini ---
    [...]
    ; This directive allows you to disable certain functions for security reasons.
    ; It receives a comma-delimited list of function names. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    disable_functions =
    [...]
    Grüße
    Thomas

    Kommentar


    • #3
      Hallo,

      erstmal danke für die Antwort

      Also unter [man]phpinfo()[/man] steht folgendes:
      Code:
      disable_functions    no value    no value

      Kommentar


      • #4
        Zitat von pfump Beitrag anzeigen

        Hier mal der Quelltext:
        Code:
            system('mysqldump -h'.$DB_SRC['server'].' -u'.$DB_SRC['user'].' -p'.$DB_SRC['pass'].' '.$DB_SRC['db_alt'].' > '.$path.$dateiname, $retval);
        Lade ich das ganze auf dem Server hoch und führe die Datei aus (php5 -f import.php), klappt das ganze nicht.
        Eventuell findet PHP mit system() einfach das Programm "mysqldump" nicht im Suchpfad.
        Kannst Du Testweise mal den absoluten Pfad zu mysqldump angeben?

        z.B:

        Code:
            system('D:/mysql/bin/mysqldump -h'.$DB_SRC['server'].' -u'.$DB_SRC['user'].' -p'.$DB_SRC['pass'].' '.$DB_SRC['db_alt'].' > '.$path.$dateiname, $retval);
        Grüße
        Thomas

        Kommentar

        Lädt...
        X