我正在尝试检测安装了哪些 MDB2 驱动程序。这样我就可以使用用户安装的任何东西。我尝试使用 class_exists("MDB2_Driver_$driver", FALSE) 或 (@include_once("MDB2/Driver/$driver.php")),但它不起作用。(第一个为所有驱动程序返回 FALSE,第二个为现有驱动程序崩溃)
关于如何做到这一点的任何想法?似乎 MDB2 没有为此提供任何方法。
如果这些是通过 PEAR 安装的,下面的代码就可以解决问题。它通过查询 PEAR 注册表来确定是否安装了驱动程序包。它还将显示每个驱动程序的版本。
require 'PEAR/Registry.php';
$reg = new PEAR_Registry;
$drivers = array (
'MDB2_Driver_fbsql',
'MDB2_Driver_ibase',
'MDB2_Driver_mssql',
'MDB2_Driver_mysql',
'MDB2_Driver_mysqli',
'MDB2_Driver_oci8',
'MDB2_Driver_odbc',
'MDB2_Driver_pgsql',
'MDB2_Driver_querysim',
'MDB2_Driver_sqlite',
'MDB2_Driver_sqlsrv',
);
foreach ($drivers as $driver) {
$pkg = $reg->getPackage($driver);
if (!is_null($pkg)) {
$version = $pkg->getVersion();
echo "$driver v$version installed\n";
}
}