0

我正在尝试检测安装了哪些 MDB2 驱动程序。这样我就可以使用用户安装的任何东西。我尝试使用 class_exists("MDB2_Driver_$driver", FALSE) 或 (@include_once("MDB2/Driver/$driver.php")),但它不起作用。(第一个为所有驱动程序返回 FALSE,第二个为现有驱动程序崩溃)

关于如何做到这一点的任何想法?似乎 MDB2 没有为此提供任何方法。

4

1 回答 1

0

如果这些是通过 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";
    }
}

这是基于我去年发布到https://gist.github.com/kenguest/1671361的一段代码。

于 2013-03-30T02:02:19.453 回答