2014-01-20 27 views
2

我試圖安裝OCI,這樣我就可以使用新的PDO(「OCI:DBNAME ...啓用PDO OCI

我已經安裝了戰鬥1,5h後甲骨文instantclient(基本和SDK)和然後OCI爲PHP(如這裏所描述http://ubuntuforums.org/showthread.php?t=92528)。

現在我有點困惑,因爲我的phpinfo告訴OCI8支持已啓用,但在PDO節還有隻有ODBC「PDO驅動程序」一節中。

我什麼時候出錯了?

PS 我g OT是Xubuntu 12.10及以下的包安裝: PHP梨,PHP5,PHP5-CLI,PHP5常見,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 needed libraries not found under /opt/oracle/instantclient

我不知道這樣做在Windows上不會更容易。

+0

該鏈接解釋瞭如何使用'OCI8',而不是'PDO'。他們是不同的和不相關的擴展。 –

回答

7

你應該注意到,這裏有兩種完全不同的PHP擴展設計爲連接到Oracle數據庫:

  • OCI8是由Oracle公司開發的擴展。它被積極維護,並且是與Oracle進行交互的推薦方式。

  • PDO_OCI是由社區開發的PDO驅動程序。它從來沒有完成,它實際上是一種遺棄(因此在文檔中顯示的警告)。

都包含OCI(Oracle調用接口)項,因爲兩者使用內部Oracle提供的OCI API的。因此,無論您選擇哪個庫,都需要Oracle即時客戶端。但是你需要安裝相應的PHP軟件包。

就你而言,你正在安裝OCI8,然後嘗試運行PDO代碼。

1

如果您無法通過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擴展程序,但由於此擴展程序是主動維護的並且通常是操作系統存儲庫的一部分,因此安裝時不應出現問題。