Signatur
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
['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;
}
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());
}
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);
}
// 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.