无法使用PDO连接到Oracle

时间:2014-04-23 08:57:13

标签: php oracle pdo

我有这些片段,但我仍然无法连接到我的Oracle数据库。我相信我做的一切都是正确的,但我不知道陷阱在哪里。

try {
    $user='weltesadmin'; // Enter your DB User Name.
    $pass='weltespass'; // Enter your DB Password.
    $dataBaseName='weltes'; // Enter your Database Name.
    $dbh = new PDO('OCI:dbname='.$dataBaseName.'charset=UTF-8', $user,$pass);
    echo "Connection Successful";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . " ";
    die();
}

php.ini上:

extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pdo_sqlite_external.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll

3 个答案:

答案 0 :(得分:1)

检查已安装的驱动程序,看看是否安装了oci

foreach(PDO::getAvailableDrivers() as $driver)
    echo $driver, '\n';

如果oci未显示,则需要安装它(http://php.net/manual/en/ref.pdo-oci.php

答案 1 :(得分:0)

看着这条线:
$ dbh = new PDO(' OCI:dbname ='。$ dataBaseName。' charset = UTF-8',$ user,$ pass);
您已使用OCI替换为" oci" (小案)
(我自己犯了一个错误)
一旦你从php.ini更改了以下行中的取消注释就足够了:
延长= php_pdo_oci.dll

答案 2 :(得分:-1)

按照说明解决了我的问题 http://lacot.org/blog/2009/11/03/ubuntu-php5-oci8-and-pdo_oci-the-perfect-install.html

不要忘记导出oracle home。即使设置了oracle home我也无法配置pdo_oci。所以给 export ORACLE_HOME = / opt / instantclient_10_2 / 在pdo_oci-1.0目录中运行configure之前

  1. 启用上述扩展程序
  2. 将此添加到requirements.php

    array(
                'name' => 'PDO Oracle extension',
                'mandatory' => false,
                'condition' => extension_loaded('pdo_oci'),
                'by' => 'All DB-related classes',
                'memo' => 'Required for Oracle database.',
    ),
    
  3. 在db.php中编辑dsn,如下所示

    return [
            'class' => 'yii\db\Connection',
            'dsn'=> 'oci:dbname=(DESCRIPTION=(ADDRESS=(HOST=x.y.z.a)(PROTOCOL=tcp)(PORT=1525))(CONNECT_DATA=(SID=YOURSID)))',
            'username' => 'USER',
            'password' => 'PASS',
            'charset' => 'utf8',
    ];