Signatur
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
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);
?>
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);
?>
// 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.