PHP致命错误:类“PDO”未找到。

5
我有一个PHP函数,在重新安装我的开发系统之前一直运行得很好:
function connectDB($database, $username, $password) {

    $DSN = "mysql:host=localhost;dbname=$database";

    try {
        $DBH = new PDO($DSN, $username, $password); <--- LINE 10
        return $DBH;
    }
    catch(PDOException $e) {
        die("Could not connect to the database.\n");
    }
}

我遇到了以下错误:

PHP Fatal error:  Class 'PDO' not found in /var/www/im/tools.php on line 10

我查看了phpinfo()并且PDO已启用:

PDO驱动程序:mysql

用于MySQL的PDO驱动程序版本:5.1.54

有趣的是,与MYSQL数据库的交互是正常的,但在调试时仍然会出现错误。

我对这个错误感到困惑!我的系统是Ubuntu 11.04 + NGINX + PHP 5.3

有什么提示可以去除它吗?谢谢!


与MYSQL数据库的交互是正常的,但在调试时仍然出现错误。这句话的意思是在编写程序时,与MYSQL数据库的连接没有问题,但在调试过程中仍然遇到了错误。 - Matthew
函数运行正常,我可以查询数据库,但在Eclipse的调试界面中出现了“致命错误”。 - Gabriel
3
请检查/etc/php5/cli/conf.d/*目录,确保在此处启用了pdo.so(似乎只有CGI/mod_php版本才已启用)。 - mario
extension=pdo.so 只在 pdo.ini 中。你提到的目录中有几个 .ini 文件,但我不确定将 extension=pdo.so 添加到每个文件中是否是解决方案。我尝试将其添加到 mysql.ini 中,但没有结果。 - Gabriel
3个回答

5

您是否在使用命名空间代码?也许您需要使用 \PDO 类?


触发该类的代码在问题中,我认为它没有命名空间。 - Gabriel

2
这也可能发生在 Web 应用程序的当前工作目录中存在 php.ini 文件的情况下。如果已经将某些设置放置在其中,它将覆盖全局设置。
为避免此问题,请不要使用 php.ini 更改设置;而是在 vhost 声明或 .htaccess 文件中使用 'php_flag'。
另请参阅 PHP 致命错误:类 'PDO' 未找到

为什么被踩了?我强烈怀疑你的答案可能是正确的。我遇到了同样的问题,但只有在cronjob运行的脚本中才会出现问题,并且问题恰好在一个新的php.ini文件安装在我的根目录之后开始出现。但由于你的答案被踩了,我想知道你是否有更多关于这个问题的信息,我不想搞乱服务器配置! - don
请注意,以下是程序相关内容的翻译:PS http://stackoverflow.com/questions/16561937/php-fatal-error-class-pdo-not-found-only-on-cron-job/16562026?noredirect=1#16562026 - don
我不知道为什么我的回答被踩了。我怀疑是那些自认为是专家的人,他们认为任何问题只可能有一个原因。 - Alastair Irvine
1
你是以root身份运行cronjob吗?如果是,那么php.ini可能只能被root读取,因此被Apache忽略了。 - Alastair Irvine
也许你是对的,我不知道,但无论如何,问题正是你指出的那一个。将根文件夹中的php.ini删除后,一切恢复正常了。谢谢! - don

0

尝试

 yum install php-pdo

 service httpd restart

yum?不应该是apt吗? - DevOpsSauce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接