PHP mysqldump geht nicht

  • hey ho hab mal wieder nen problemchen....
    wers noch nicht mitbekommen hab: bin nun stolzer beitzer eines linux systems(debian 4.0 besser bekannt als debian etch) und da hab ich nen kleines problemchen mit dem mysqldump unter PHP....
    einfach mal zurerklärung: mysql* ist nicht anderes als ein datenbankverwaltungssystem
    (eine datenbank kann man sich so wie ein stundenplan vorstellen) und ein mysqldump erzeugt eine sicherungskopie(besser:backup) von einer datenbank..
    ein backup erzeugt man unteranderem indem man in die console geht(vergleichbar mit der command [cmd.exe]) und folgenden befehl eingibt:

    Code
    mysqldump --opt -h localhost datenbank | gzip > /var/www/apache2-default/cron/backup/sql.gz


    was macht das ding:

    Spoiler anzeigen

    mysqldump steht für den befehl: lege ein datenbankbackup an
    --opt = Parameter => Das sollte den schnellstmöglichen Dump zum Einlesen in einen MySQL-Server ergeben. (nicht wichtig)
    -h localhost gibt an auf welchem server die datenbank liegt..hier:auf dem eigenen
    datenbank steht für den datenbank namen
    | gzip packt den ganzen sql-dump in eine art zip archiv(damits kleiner ist)
    > * der rest steht nur noch für den speicherort


    über die console geht das ganze einwandfrei..aber jetzt kommt das problemchen....
    ich php gibt es eine funktion die einen bestimmten text sozusagen an die console weitergibt (entweder system exec oder wie auch immer machen alle das gleiche)..so wenn man jetzt das gleiche via php aufruft geht es nicht!!!! php hat im ordner alle notwendigen rechte (read write execute)...es wird zwar eine entspechende gzip datei angelegt wo eingentlich das backup der datenbank drin sein sollte aber das archiv ist leer....:( wenn ich die return werte der funktion auswerte bekomm ich keine fehlermeldung

    hätte jemand ne idee was ich falsch mache??????
    beim sqldump muss ich kein user oder passwort angeben da php unter eigner userid läuft (www-data)....


    bitte helft mir :rolleyes:

    le snoozer
    [Externe links(oben mit stern gekennzeichnet):]
    mysql wikipedia


    PSS:jemand ne ahnung warum der ping unter win xp nicht mehr geht?^^

  • Wie sieht denn dein PHP aus?

    Normalerweise (mit Passwort usw.) sollte es so funktionieren:

    PHP
    <?php
    system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h localhost DATENBANKNAME | gzip > ".dirname(__FILE__)."/dump.gz", $ret);
    if ($ret==0) echo "Daten erfolgreich exportiert"; else echo "Es ist ein Fehler beim Exportieren aufgetreten";
    ?>

    Ping geht unter XP nicht mehr? Hat es denn schon mal funktioniert?

    Viele Grüße
    Stilgar

  • nein...geht nicht....auf der seite bin auch schon vorbei gekommen^^
    und unteranderem ist es genau das was ich habe...(brauch username und password nicht da php sozusagen eigener user ist und eigenes pw hat...die zusatzinfos des benutzers werden nur benötigt wenn man das unter anderm usernamen machen will...nicht notwendig....außerdem hat es kein unterschied zum ergebnis(kein backup /aber auch kein fehler )

    snoozer


    ///edit

    mhhh ich hab nichts gemacht mein alten code ausgeführt und jetzt gehts wieder....ganz komische sache^^ naja mal schauen wie lange^^

    thx for help snoozer

    • Offizieller Beitrag
    Code
    mysqldump --opt -p -uBENUTZER -h localhost DATENBANK > db.sql && gzip db.sql && mv db.sql.gz /PFAD/sql.sql.gz

    -p fragt nach dem PW des Benutzers
    -u gibt den Benutzer an
    DATENBANK sollte klar sein, wichtig ist auch das der angegebene User Zugriff darauf hat

    So mach ich das Backup

    In der php.ini Datei gibt es einen Beriech disabled_functions dort stehen normalerweise exec,system,system_exec und so weiter angegeben. Damit können diese Befehle in PHP nicht mehr verwendet werden. Die Frage ist auch, ob die PHP Datei, die ja unter den Rechten des Webbenutzers läuft Zugriff auf das Backupverzeichnis und allen übergeordneten Verzeichnissen hat.

  • coole sache dankeschön :)
    unterm localhost ist das mit den rechten eigentlich egal...aufm server wird interessant..aber da gehts mitlerweile auch schon alle notwendigen rechte vorhanden :) da gehts nur mit den extra angaben des users und mitlerweile auch nur noch so unterm localhost :D

    thx everybody for help :)
    damit ist dieses problem endgültig gelößt :)

    snoozer