2009-09-17 120 views
2

我試圖使用PDO連接到我的oracle數據庫,但我得到Class PDO未找到錯誤。我檢查過PDO已啓用並且看起來如此。儘管如此,我仍然無法追查爲什麼我得到這個錯誤。這裏是我的配置命令,在PHP中嘗試連接到Oracle數據庫時發現「Class'PDO'not found」錯誤

cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" 
"--with-snapshot-template=d:\php-sdk\snap_5_2\vc6\x86\template" 
"--with-php-build=d:\php-sdk\snap_5_2\vc6\x86\php_build" 
"--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" 
"--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared" 

PHP版本:5.2.8 甲骨文:10.2

這是我使用連接到數據庫的代碼。

try{ 
    $conn = new PDO("oci:dbname=".$oc_db,$oc_user,$oc_pass); 
}catch(PDOException $e){ 
    echo ($e->getMessage()); 
} 

有沒有其他的原因,我得到這個錯誤?任何幫助讚賞。

+1

PDO需要一般的PDO模塊和驅動程序特定模塊(在你的情況下php_oracle)啓用。在PDO部分'PDO驅動程序'中輸出對phpinfo()的輸出是什麼?哪些特定的驅動程序啓用? – 2009-09-17 01:26:15

+0

既然你提到這個我在phpinfo()中再次檢出,但沒有「PDO驅動程序」部分。 – Chantz 2009-09-17 01:27:58

+0

啊,是的,當然,我認爲這是有道理的,因爲你提到PDO類沒有找到。傻我。我擔心我沒有太熟練的配置PHP的配置方式。但我的猜測是你應該有'--with-pdo'這兩行安裝普通PDO模塊的另一個配置選項。這是假設'--with-pdo-oci'不會自動安裝一般的PDO模塊。雖然不確定。 – 2009-09-17 01:36:24

回答

1

這通常意味着所討論的PDO擴展沒有被編譯和設置,所以PHP可以使用它。你在編譯PHP的操作系統是什麼?

我不確定是否編譯PDO核心模塊,如果您只指定編譯它的oracle擴展(PDO-OCI)。

您應該查看PHP手冊,瞭解如何安裝和啓用PDO模塊。

你應該看看這些網站: http://is.php.net/manual/en/pdo.installation.php http://is.php.net/manual/en/ref.pdo-oci.php

+0

我(實際上,我的網站管理員)正在Windows Box上編譯它。我認爲他沒有安裝PDO_OCI,但它已經被整理出來了。謝謝。 – Chantz 2009-09-20 02:07:09

0

檢查我的問題我解決此和其他錯誤,但隨後林卡住,在agiletoolkit配置,如default.php No records found ...Agiletoolkit and Oracle. Grid/CRUD elements

我的Oracle連接字符串文件看起來像這樣:

$config['dsn']= array('oci:dbname=localhost/MYDATABASE', 'MYUSER', 'MYPASSWORD'); 

要修復找不到驅動程序錯誤,我啓用了extension = p hp_pdo_oci8.dll在我的apache安裝中的php.ini文件中。

然後是關於丟失「oci.php」的錯誤,要解決,我不得不創建我自己的文件是這樣的:

class DB_dsql_oci extends DB_dsql { 
    function limit($cnt,$shift=0){ 
     $cnt+=$shift; 

    $this->where('NUM_ROWS>=',$shift); 
     $this->where('NUM_ROWS<',$cnt); 
     return $this; 
    } 
    function render_limit(){ 
     return ''; 
    } 
} 

,並把它放在:... atk4 \ LIB \ DB \ DSQL

要解決Oracle的特殊字符的錯誤,我就/atk4/lib/DB/dsql.php設置59行空字符串是這樣的:public $bt='';

我管理運行數據庫測試,它說「成功連接到數據庫」。

相關問題