【问题标题】:Enabling PDO OCI启用 PDO OCI
【发布时间】:2014-02-09 09:01:35
【问题描述】:

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

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

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

我什么时候出错了?

附: 我已经安装了 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

我收到以下错误:

配置:错误:Oracle-OCI 需要在 /opt/oracle/instantclient 下找不到的库

我想知道在 Windows 上这样做会不会更容易。

【问题讨论】:

  • 该链接解释了如何使用OCI8,而不是PDO。它们是不同且不相关的扩展。

标签: php oracle ubuntu pdo oracle-call-interface


【解决方案1】:

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

  • OCI8 是 Oracle Corporation 开发的扩展。它得到积极维护,是与 Oracle 交互的推荐方式。

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

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

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

【讨论】:

    【解决方案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 扩展,但由于此扩展得到积极维护并且通常是操作系统存储库的一部分,因此安装应该没有问题。

    【讨论】:

    • 感谢存储库的链接/提及。工作精美,可以通过作曲家安装,也可以不安装。当然加快了开发工作。
    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 2016-05-18
    • 2014-10-28
    • 2016-06-29
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多