Oracle PHP PDO异常:找不到驱动程序


Oracle PHP PDO exception: could not find driver

我正试图破解一个脚本连接到远程oracle数据库并执行一个简单的查询

通过广泛的搜索,我找到了以下脚本:

<?
$tns = "
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = bogus.com.au)(PORT = 1521))
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = myDB )
        )
    )
";

$pdo_string = 'oci:dbname='.$tns;
try {
    $dbh = new PDO($pdo_string, 'test', 'fake');
} catch (PDOException $e) {
    echo "Failed to obtain database handle: " . $e->getMessage();
    exit;
}
$query = "SELECT * FROM someTable";
$stmt = $dbh->prepare($query);
if ($stmt->execute()) {
    echo "<h4>$query</h4>";
    echo "<pre>";
    while ($row = $stmt->fetch()) {
        print_r($row);
    }
    echo "</pre>";
}
?>

然而,我得到错误could not find driver。所以我做了:

foreach(PDO::getAvailableDrivers() as $driver)
    echo $driver, '<br>';

返回:

mysql
odbc
sqlite

这告诉我我已经安装了驱动程序,对吗?

我做错了什么?(不可否认,我对PHP和Oracle数据库几乎一无所知,所以可能我错过了显而易见的…)

您必须在PDO中安装Oracle适配器:

http://php.net/manual/en/ref.pdo-oci.php

您必须配置您的服务器以启用PDO_OCI扩展。

转到php.ini,找到extension=php_pdo_oci.dll行,并从开始处删除逗号;,然后重新启动apache服务。