Frage

Ich versuche, einen MySQL-Dump über PHP zu tun.

Dies ist der Code

$backupFile = $table. "-". date("Y-m-d-H:i:s") . '.gz';
    //Command nog aanpassen....
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname  | gzip > $backupFile";
    //$status = system($command);
    echo $backupFile ."<br>";
    $status = passthru($command, $a);
    echo "output:" .  $a;

Der Wert von $ a = 2. Aber ich kann nicht finden, was es bedeutet. Ich kann auch nicht die Backup-Datei überall finden.

Jede Idee?

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob dies das Problem ist, aber es sieht aus wie Parameter Ihr Passwort Gang ist falsch.

Wenn Sie -p Sie müssen das Kennwort haben, direkt daneben, ohne Leerzeichen, etwa so:

$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname  | gzip > $backupFile";

oder verwenden Sie die lange --password = $ dbpass.

Zum Beispiel:

$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname  | gzip > $backupFile";

Von der mysqldump-man-Seite:

  

- Passwort [= password], -p [password]

     

Das Passwort zu verwenden, wenn die Verbindung zum Server. Wenn Sie die Kurzform der Option (-p) verwenden, können Sie kein Leerzeichen zwischen der Option und dem Passwort ein. Wenn Sie das Kennwort Wert nach der Option --password bzw. -p in der Befehlszeile nicht angeben, werden Sie aufgefordert, für einen.

Andere Tipps

Könnte auch Ihr Backup Ziel sein. Stellen Sie sicher, dass der Benutzer, den Sie mysqldump als (in Ihrem Fall wahrscheinlich www-data, oder einige andere Apache-Benutzer) laufen hat Schreibrechte auf das Verzeichnis, in dem Sie versuchen, Ihre Sicherung zu schreiben. Eine Menge Zeit werde ich einen Befehl von der Kommandozeile versuchen .. und sehe es funktionieren .. aber ich bin root, oder mein Benutzer .. nicht www-data.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top