2016-05-05 16 views
1
$backupFile = $dbname . date("Y-m-d-H-i-s") . '.gz'; 
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile"; 
system($command); 

Meine Backup-Datei endet als leere Null-Byte-Datei.Backup-Datenbank mit PHP - mysqldump

Meine Authentifizierungs- und Verbindungsdetails sind korrekt.

Ich habe Fehlermeldungen aktiviert - keine Fehler.

Server läuft PHP 5.6.

+0

fangen Sie Fehler mit 'proc_open()', oder umleiten 'stderr' zu einer Datei:' mysqldump ... | gzip> Datei 2> error.log' –

Antwort

2

Nach mysqldump Dokumentation, sollten Sie nicht Raum zwischen -p und Passwort setzen:

· --password[=password], -p[password]

Das Passwort, wenn die Verbindung zum Server zu verwenden. Wenn Sie das kurze Optionsformular (-p) verwenden, können Sie zwischen der Option und dem Passwort kein Leerzeichen einfügen. Wenn Sie den Kennwortwert nach der Option --password oder -p in der Befehlszeile weglassen, fordert mysqldump Sie auf.

+0

Danke. Ich entfernte das Leerzeichen und es funktionierte: $ command = "mysqldump --opt -h $ dbhost -u $ dbuser -p $ dbpass $ dbname | gzip> $ backupFile"; –

0

Wenn mysqldump von PHP aufrufen können Sie die ausführbaren vollständigen Pfad schreiben müssen (zB: '/usr/local/mysql-5.1.52-osx10.6-x86_64/bin/mysqldump' statt von 'mysqldump')