Start · Sprachen · PHP · Referenz · pdo_drivers

pdo_drivers

Funktion

Gibt ein Array mit den Namen aller aktuell verfügbaren PDO-Treiber zurück.

seit PHP 5.1.0 Kategorie: db

Signatur

pdo_drivers(): array

Beschreibung

pdo_drivers() liefert eine Liste aller PDO-Treiber, die in der aktuellen PHP-Installation aktiviert sind. Typische Treibernamen sind beispielsweise mysql, pgsql, sqlite, sqlsrv oder oci.

Die Funktion ist nützlich, um zur Laufzeit zu prüfen, ob ein bestimmter Datenbanktreiber verfügbar ist, bevor eine Verbindung über new PDO(...) aufgebaut wird. So lassen sich aussagekräftige Fehlermeldungen oder Fallback-Mechanismen implementieren, statt eine PDOException abzufangen.

Die zurückgegebenen Treibernamen entsprechen genau dem DSN-Präfix, das beim Erstellen einer PDO-Instanz verwendet wird – z. B. mysql für mysql:host=localhost;dbname=test.

Besonders in Installationsskripten, Diagnose-Tools oder Frameworks, die mehrere Datenbanksysteme unterstützen sollen, ist diese Funktion hilfreich, um die Systemvoraussetzungen zu überprüfen.

Rückgabewert

Typ
array
Beschreibung
Ein numerisch indexiertes Array aus Strings, das die Namen aller verfügbaren PDO-Treiber enthält, z. B. ['mysql', 'pgsql', 'sqlite']. Ist kein PDO-Treiber geladen, wird ein leeres Array zurückgegeben.

Beispiele

Verfügbare PDO-Treiber ausgeben

<?php
$treiber = pdo_drivers();

echo "Verfügbare PDO-Treiber:" . PHP_EOL;
foreach ($treiber as $name) {
    echo "  - " . $name . PHP_EOL;
}
Verfügbare PDO-Treiber: - mysql - pgsql - sqlite

Prüfen ob MySQL-Treiber vorhanden ist

<?php
$benoetigterTreiber = 'mysql';

if (in_array($benoetigterTreiber, pdo_drivers())) {
    $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'passwort');
    echo "Verbindung erfolgreich hergestellt.";
} else {
    echo "Fehler: Der PDO-Treiber '{$benoetigterTreiber}' ist nicht verfügbar.";
    echo PHP_EOL . "Installierte Treiber: " . implode(', ', pdo_drivers());
}
Verbindung erfolgreich hergestellt.

Diagnose-Ausgabe für Installationsprüfung

<?php
$benoetigt  = ['mysql', 'sqlite'];
$vorhanden  = pdo_drivers();
$fehlend    = array_diff($benoetigt, $vorhanden);

if (empty($fehlend)) {
    echo "Alle benötigten PDO-Treiber sind vorhanden.";
} else {
    echo "Fehlende PDO-Treiber: " . implode(', ', $fehlend);
}
Alle benötigten PDO-Treiber sind vorhanden.

// Wichtig · Fallstricke

Hinweis zur Aktivierung: PDO-Treiber werden als separate PHP-Erweiterungen geladen (z. B. pdo_mysql, pdo_pgsql). Sie müssen in der php.ini aktiviert sein, damit sie von pdo_drivers() aufgeführt werden. Das bloße Vorhandensein der PDO-Erweiterung reicht nicht aus.

Umgebungsunterschiede: Die Ausgabe kann je nach Serverkonfiguration stark variieren. Zwischen Entwicklungsumgebung und Produktivserver können unterschiedliche Treiber verfügbar sein, was zu schwer nachvollziehbaren Fehlern führen kann. Eine explizite Prüfung im Deploymentprozess ist daher empfehlenswert.