Start · Sprachen · PHP · Referenz · ibase_service_attach

ibase_service_attach

Funktion

Stellt eine Verbindung zum Firebird/InterBase Service-Manager her und gibt ein Service-Handle zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_service_attach(string $host, string $dba_username, string $dba_password, int $buffers = 0, int $dialect = SQL_DIALECT_CURRENT, string $role = '', int $sync = 0): resource|false

Beschreibung

ibase_service_attach() verbindet sich mit dem Service-Manager eines Firebird- oder InterBase-Datenbankservers. Der Service-Manager ist eine spezielle Schnittstelle, über die administrative Aufgaben ausgeführt werden können, z. B. Datenbanksicherungen, Wiederherstellungen, Benutzerverwaltung und Serverstatistiken.

Die zurückgegebene Ressource (Service-Handle) wird als Eingabeparameter für andere Service-Funktionen wie ibase_backup(), ibase_restore(), ibase_maintain_db() oder ibase_server_info() benötigt. Nach Abschluss aller Operationen sollte das Handle mit ibase_service_detach() wieder freigegeben werden.

Die Funktion erfordert DBA-Zugangsdaten (typischerweise den SYSDBA-Account), da der Zugriff auf den Service-Manager administrative Rechte voraussetzt. Reguläre Datenbankbenutzer haben keinen Zugang zum Service-Manager.

Hinweis: Die ibase_*-Funktionen sind seit PHP 7.4 aus dem PHP-Kern entfernt worden und stehen nur noch über die PECL-Erweiterung ibase (bzw. interbase) zur Verfügung.

Parameter

Name Typ Default Beschreibung
$host Pflicht string Hostname oder IP-Adresse des Firebird/InterBase-Servers, z. B. 'localhost' oder '192.168.1.10'.
$dba_username Pflicht string Benutzername des Datenbankadministrators, in der Regel 'SYSDBA'.
$dba_password Pflicht string Passwort des Datenbankadministrators.
$buffers int 0 Anzahl der Datenbankpuffer, die dem Server zugewiesen werden. 0 verwendet den Standardwert des Servers.
$dialect int SQL_DIALECT_CURRENT SQL-Dialekt, der für die Verbindung verwendet wird. Gültige Werte sind 1, 2 oder 3.
$role string SQL-Rolle, die für die Verbindung verwendet werden soll.
$sync int 0 Synchrones oder asynchrones Schreiben. 0 = asynchron (Standard), 1 = synchron.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg ein Service-Handle (Ressource) zurück, das für nachfolgende Service-Funktionen benötigt wird. Im Fehlerfall wird false zurückgegeben.

Beispiele

Verbindung zum Service-Manager und Serverinfo abrufen

<?php
// Verbindung zum Firebird Service-Manager herstellen
$service = ibase_service_attach('localhost', 'SYSDBA', 'masterkey');

if ($service === false) {
    die('Verbindung zum Service-Manager fehlgeschlagen.');
}

// Serverversion abfragen
$version = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
echo 'Serverversion: ' . $version . PHP_EOL;

// Verbindung trennen
ibase_service_detach($service);
?>
Serverversion: LI-V6.3.4.4967 Firebird 2.5

Datenbank-Backup über den Service-Manager erstellen

<?php
$host     = 'db.example.com';
$user     = 'SYSDBA';
$password = 'geheimesPasswort';

$service = ibase_service_attach($host, $user, $password);

if ($service === false) {
    die('Service-Manager nicht erreichbar.');
}

$dbPath     = '/var/lib/firebird/data/meinedatenbank.fdb';
$backupPath = '/var/backups/meinedatenbank.fbk';

// Backup starten
$result = ibase_backup($service, $dbPath, $backupPath, IBASE_BKP_IGNORE_CHECKSUMS);

if ($result) {
    echo 'Backup erfolgreich erstellt: ' . $backupPath . PHP_EOL;
} else {
    echo 'Backup fehlgeschlagen.' . PHP_EOL;
}

ibase_service_detach($service);
?>
Backup erfolgreich erstellt: /var/backups/meinedatenbank.fbk

// Wichtig · Fallstricke

Sicherheitshinweis: Die DBA-Zugangsdaten sollten niemals im Quellcode hartcodiert werden. Verwende stattdessen Umgebungsvariablen oder verschlüsselte Konfigurationsdateien, um Passwörter sicher zu verwalten.

Deprecation: Die ibase_*-Erweiterung wurde mit PHP 7.4 aus dem offiziellen PHP-Kern entfernt. Für PHP 7.4 und neuer muss die Erweiterung über PECL installiert werden (pecl install interbase). Es wird empfohlen, auf moderne Alternativen wie den Firebird PDO-Treiber (pdo_firebird) zu wechseln, sofern dies möglich ist.

Verbindung trennen: Das Service-Handle sollte nach der Nutzung immer mit ibase_service_detach() freigegeben werden, um Ressourcenlecks zu vermeiden.