Signatur
Beschreibung
ibase_restore() sendet einen Wiederherstellungsauftrag an den Firebird- oder InterBase-Service-Manager. Die Funktion stellt eine zuvor mit ibase_backup() erstellte Sicherungsdatei in einer neuen oder vorhandenen Datenbank wieder her. Der Service-Manager führt den Prozess im Hintergrund aus, sodass die Funktion unmittelbar nach der Auftragsübergabe zurückkehrt, ohne auf den Abschluss zu warten.
Eine Verbindung zum Service-Manager wird mit ibase_service_attach() hergestellt und liefert das erforderliche $service_handle. Nach dem Aufruf von ibase_restore() sollte die Verbindung mit ibase_service_detach() wieder freigegeben werden.
Durch die verschiedenen $options-Flags lässt sich das Wiederherstellungsverhalten steuern, etwa ob Indizes während der Wiederherstellung erstellt werden sollen, ob eine bereits vorhandene Zieldatenbank überschrieben werden darf (IBASE_RES_CREATE) oder ob Transaktionsprotokolle berücksichtigt werden. Die Flags können per bitweisem ODER kombiniert werden.
Hinweis: Die gesamte ibase_*-Erweiterung (alias interbase) wurde mit PHP 8.0 aus dem PHP-Kern entfernt. Sie ist seitdem nur noch über die externe PECL-Erweiterung ibase verfügbar. Für neue Projekte sollte stattdessen die Firebird PDO-Erweiterung verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $service_handle Pflicht | resource | Eine aktive Verbindung zum Service-Manager, die zuvor mit ibase_service_attach() geöffnet wurde. |
|
| $source_file Pflicht | string | Absoluter Pfad zur Sicherungsdatei auf dem Server, die wiederhergestellt werden soll (z. B. /var/backup/mydb.fbk). |
|
| $dest_db Pflicht | string | Absoluter Pfad oder Alias der Zieldatenbank, in die die Sicherung wiederhergestellt werden soll (z. B. /var/data/mydb.fdb). |
|
| $options | int | 0 | Optionale Bitmaske aus IBASE_RES_*-Konstanten, z. B. IBASE_RES_CREATE (überschreibt vorhandene Datenbank), IBASE_RES_DEACTIVATE_IDX (deaktiviert Indizes während der Wiederherstellung) oder IBASE_RES_NO_SHADOW. Mehrere Flags können per | kombiniert werden. |
| $verbose | bool | false | Wenn true, gibt die Funktion detaillierte Fortschrittsinformationen des Service-Managers aus. |
Rückgabewert
true zurück, wenn der Wiederherstellungsauftrag erfolgreich an den Service-Manager übergeben wurde. Bei $verbose = true kann die Ausgabe direkt an den Client gesendet werden. Im Fehlerfall wird false zurückgegeben.Beispiele
Einfache Datenbankwiederherstellung
<?php
// Verbindung zum Service-Manager herstellen
$service = ibase_service_attach('localhost', 'sysdba', 'masterkey');
if ($service === false) {
die('Service-Manager-Verbindung fehlgeschlagen.');
}
// Wiederherstellung einleiten
$result = ibase_restore(
$service,
'/var/backup/shop.fbk', // Quelldatei (Backup)
'/var/data/shop_new.fdb', // Zieldatenbank
IBASE_RES_CREATE // Vorhandene DB überschreiben
);
if ($result) {
echo 'Wiederherstellungsauftrag erfolgreich übergeben.';
} else {
echo 'Fehler beim Einleiten der Wiederherstellung.';
}
// Verbindung freigeben
ibase_service_detach($service);
Wiederherstellung mit deaktivierten Indizes und Verbose-Ausgabe
<?php
// Verbindung zum Service-Manager herstellen
$service = ibase_service_attach('db.example.com', 'sysdba', 'masterkey');
if ($service === false) {
die('Keine Verbindung zum Service-Manager möglich.');
}
// Flags kombinieren: Vorhandene DB überschreiben + Indizes erst nach Restore anlegen
$options = IBASE_RES_CREATE | IBASE_RES_DEACTIVATE_IDX;
// Mit verbose=true: Service-Manager gibt Fortschrittsinfos aus
ibase_restore(
$service,
'/backups/crm_2024.fbk',
'/databases/crm_restored.fdb',
$options,
true // Verbose
);
ibase_service_detach($service);
echo PHP_EOL . 'Wiederherstellung abgeschlossen (oder im Hintergrund aktiv).';
// Wichtig · Fallstricke
Sicherheit: Stellen Sie sicher, dass Pfadangaben für Quell- und Zieldatei niemals direkt aus Benutzereingaben stammen, da dies zu Path-Traversal-Angriffen führen kann. Validieren und bereinigen Sie alle Pfade vor der Übergabe an die Funktion.
Deprecation / Entfernung: Die ibase_*-Funktionen wurden in PHP 7.4 als veraltet markiert und mit PHP 8.0 vollständig aus dem PHP-Kern entfernt. Für PHP 8+ ist die PECL-Erweiterung php-interbase oder der Umstieg auf PDO_Firebird erforderlich.
Hintergrundausführung: Die Funktion kehrt sofort zurück. Der eigentliche Wiederherstellungsprozess läuft asynchron im Service-Manager. Um den Status zu prüfen, kann ibase_service_query() verwendet werden.
Berechtigungen: Der Datenbankbenutzer muss über ausreichende Rechte verfügen (typischerweise SYSDBA), um Wiederherstellungen über den Service-Manager durchführen zu dürfen.