启用PDO OCI

时间:2014-01-20 09:00:50

标签: php oracle ubuntu pdo oci

我已经尝试安装OCI,所以我可以使用新的PDO(“oci:dbname ...

经过1.5小时的战斗后,我安装了oracle instantclient(基本和sdk),然后安装了oci for php(如http://ubuntuforums.org/showthread.php?t=92528所述)。

现在我有点困惑,因为我的PHPinfo告诉OCI8支持已启用,但在PDO部分中,“PDO驱动程序”部分只有odbc。

我什么时候出错?

P.S。 我有XUBUNTU 12.10并安装了以下数据包: php-pear,php5,php5-cli,php5-common,php5-dbg,php5-dev,php5-odbc

编辑: 谢谢你的解释。现在我正试图在此之后安装“pdo_oci”: http://lacot.org/blog/2009/11/03/ubuntu-php5-oci8-and-pdo_oci-the-perfect-install.html

现在调用它:

  

/usr/local/src/PDO_OCI-1.0# ./configure --with-oci8 = instantclient,/ opt / oracle / instantclient,12.1

我收到了以下错误:

  

configure:error:Oracle-OCI需要在/ opt / oracle / instantclient

下找不到的库

我想知道在Windows上执行此操作会不会更容易。

2 个答案:

答案 0 :(得分:8)

您应该注意到,有两种完全不同的PHP扩展旨在连接到Oracle数据库:

  • OCI8是Oracle Corporation开发的扩展。它是主动维护的,是与Oracle交互的推荐方式。

  • PDO_OCI是社区开发的PDO驱动程序。它从未完成,它实际上被放弃了(因此文档中显示了 EXPERIMENTAL 警告)。

两者都包含OCI(Oracle调用接口)术语,因为它们都在Oracle内部提供的OCI API中使用。因此,无论您选择哪个库,都需要Oracle Instant Client。但是,您需要安装相应的PHP包。

在您的情况下,您正在安装OCI8,然后尝试运行PDO代码。

答案 1 :(得分:2)

如果您无法通过pecl或通过源代码编译安装php_pdo_oci库,this pdooci class on github可能会有所帮助。唯一的区别是你实例化你的pdo对象的方式。改变自:

$pdo = new PDO("oci:dbname=mydatabase;charset=utf8", "user", "password");

为:

$pdo = new PDOOCI\PDO("mydatabase", "user", "password");

其余部分应与使用PDO对象完全相同。

您仍然需要安装php_oci8扩展程序,但由于此扩展程序是主动维护的,并且通常是操作系统存储库的一部分,因此安装不应该是一个问题。