【问题标题】:In PHP getting "Class 'PDO' not found" error while trying to connect to Oracle DB在 PHP 中尝试连接到 Oracle DB 时出现“找不到类‘PDO’”错误
【发布时间】:2010-11-29 00:09:14
【问题描述】:

我正在尝试使用 PDO 连接到我的 oracle 数据库,但我收到 Class PDO not found 错误。我检查了 PDO 是否已启用,并且看起来如此。我仍然无法追踪我收到此错误的原因。这是我的配置命令,

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());
}

我收到此错误还有其他原因吗?任何帮助表示赞赏。

【问题讨论】:

  • PDO 需要启用通用 PDO 模块和驱动程序特定模块(在您的情况下为 php_oracle)。在 PDO 部分“PDO 驱动程序”中调用 phpinfo() 会输出什么?启用了哪些特定驱动程序?
  • 既然你提到了这一点,我又在 phpinfo() 中检查了一遍,但没有“PDO 驱动程序”部分。
  • 啊,是的,当然,我想这是有道理的,因为您提到找不到类 PDO。傻我。恐怕我对配置 PHP 的方式不是很有经验。但我的猜测是,您应该有另一个配置选项,类似于安装通用 PDO 模块的“--with-pdo”。这是假设 '--with-pdo-oci' 不会自动安装通用 PDO 模块。不过不确定。
  • @fireeyedboy:你应该在答案中发布这个,而不是评论。

标签: php oracle pdo


【解决方案1】:

这通常意味着有问题的 PDO 扩展未编译和设置,因此 PHP 可以使用它。你在什么操作系统上编译 PHP?

如果只指定编译它的oracle扩展(PDO-OCI),我不确定是否编译了PDO核心模块。

您应该查看有关如何安装和启用 PDO 模块的 PHP 手册。

您应该查看以下网站: http://is.php.net/manual/en/pdo.installation.php http://is.php.net/manual/en/ref.pdo-oci.php

【讨论】:

  • 我(实际上是我的网站管理员)正在 Windows Box 上编译它。我认为他没有安装 PDO_OCI,但它已被整理出来。谢谢。
【解决方案2】:

检查我的问题,我解决了这个错误和其他错误,但后来我卡住了, No records found ...Agiletoolkit and Oracle. Grid/CRUD elements

agiletoolkit config-default.php 文件中的我的 Oracle 连接字符串如下所示:

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

为了修复驱动程序未找到错误,我在 apache 安装的 php.ini 文件中启用了 extension=php_pdo_oci8.dll。

然后有一个关于缺少“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='';

我设法运行数据库测试,它显示“已成功连接到数据库。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 2019-04-05
    • 2013-08-31
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多