2009-09-17 178 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='';

我管理运行数据库测试,它说“成功连接到数据库”。

相关问题