我有这些片段,但我仍然无法连接到我的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
答案 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之前
将此添加到requirements.php
array(
'name' => 'PDO Oracle extension',
'mandatory' => false,
'condition' => extension_loaded('pdo_oci'),
'by' => 'All DB-related classes',
'memo' => 'Required for Oracle database.',
),
在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',
];