Postgres-backup-Daten mit PHP

Ich versuche, backup-Datenbank mit PHP-Skript. Meine Idee war, laufen die pg_dump mit PHP eine batch-Datei. (Ja, ich bin mit PHP für Windows).

Schreibe ich diesen code:

$content = "set BACKUP_FILE=database.backup \r\n" .
            "SET PGPASSWORD=" . COF_DATABASE_PASSWORD . "\r\n" . 
            "pg_dump -i -U " . COF_DATABASE_USERNAME . " -F c -b -v -f %BACKUP_FILE% " . COF_DATABASE_NAME . "\r\n" .
            "echo done";

    file_put_contents($root . "/Files/Updates/Backup.bat", $content);
    $system = exec ($root . "/Files/Updates/Backup.bat", $result);
    pclose(popen("start /B $root/Files/Updates/Backup.bat", "r"));
    $result = shell_exec($root . "/Files/Updates/Backup.bat");

Backup.dat-Datei erstellt wird. Wenn ich es manuell ausführen von windows, die Datenbank.backup-Datei erstellt wird, aber nicht, wenn ich versuche, führen Sie die batch von PHP.
Für beide Befehl, den ich bekommen in $Ergebnis:

(string:241) D:\Data\WWW...\Process>set BACKUP_FILE= - Datenbank.backup

D:\Data\WWW...\Process>SET PGPASSWORD=dom123

D:\Data\WWW...\Process>pg_dump -i-U dom -F-c -b -v -f
Datenbank.backup-dom

Einmal als array (exec) und einmal als string (shell_exec).

Dann dachte ich, dass das ausführen von bat-Datei (selbst wenn ich im code und dann löschen) ist nicht die hellste Idee (Sicherheit). Also habe ich versucht ein backup der Datenbank mit SQL-s (PDO - execute ...)

Aber ich finde keine Dokumentation, wenn dies überhaupt möglich ist. Alle Lösungen vorzuschlagen pg_dump. Gibt es irgendein SQL-Befehl, um backup gesamte Datenbank in die Datei?

Ich bin auf der Suche nach einer funktionierenden Lösung. SQL-oder .Fledermaus, nicht die Sache an dieser Stelle.

Bearbeitet:

Versuchen Sie auch:

$string = "export PGPASSWORD=" . COF_DATABASE_PASSWORD . " && export PGUSER=" . COF_DATABASE_USERNAME . " && pg_dump -h localhost db_name " . COF_DATABASE_NAME . " > " . $root . "Files/Updates/Backup.sql && unset PGPASSWORD && unset PGUSER"; 
    exec($string);
    shell_exec($string);

Bearbeitet (Antwort auf Craig Ringer):

Versuchen, Ihren code, bekomme ich Fehler. Postgres-backup-Daten mit PHP
1: Catch-all für die Allgemeinen Fehler von auf dieser Seite

Bild für open link in new tab, um volle Größe.

  • Ich bin kein PHP-Mann, aber ich verstehe nicht, was die Verwendung von PHP ist, geben Sie hier. Warum nicht einfach eine batch-Datei ausführen, die pg_* Befehle? Sie scheinen ziemlich statisch, so dass die Ebene der Dereferenzierung mit PHP scheint nicht notwendig (und, wie man erfährt, fehleranfällig).
  • Hampson: ich bin Aktualisierung der Website mit PHP und bevor ich das Tue, will ich die backup-Dateien zu zip (FERTIG) und die backup-Datenbank. Nur für den Fall. Ich nenne update auf der Seite, dann von der ajax-request aufrufen einer anderen Seite: pclose(popen("start /B ". "php d:\WWW\Update.php", "r")); Hexe Prozess der Aktualisierung.
InformationsquelleAutor Makla | 2014-08-03
Schreibe einen Kommentar