致命错误:未找到类“PDO”(但它已安装并在终端上运行)

时间:2013-04-27 03:56:38

标签: php apache pdo

我遇到了一个非常奇怪的情况。

我的网站托管在共享主机上,从头开始,停止工作报告致命错误:未找到“PDO”类

所以我创建了一个名为 test.php 的验证文件,并将其放在public_html文件夹中。

test.php的:

<?php
if (class_exists('PDO')) {
  print "PDO is installed"; 
}
else {
  print "PDO NOT installed";
}

phpinfo();
?>

因此,上面的脚本会检查PDO类是否存在,并在此之后打印有关已安装和启用的内容的php信息。

首先,我在SSH终端上做了一些测试:

  • 在运行test.php之前,我检查了已安装的模块: $ php -m ,PDO和PDO_mysql都在那里;
  • 然后我跑 $ cd public_html $ php -f test.php 。它返回已安装PDO类,并且从phpinfo()调用中列出了PDO和PDO_mysql。

然后我在网络浏览器上运行了test.php。它返回了未安装的PDO,并且在phpinfo()打印调用中列出了PDO和PDO_mysql。

什么可能导致这种行为?

  

更新:

     

我已经尝试将下面的扩展行添加到php.ini中了   问题依然存在。我也确定我已将这些行添加到了   通过调用 get_cfg_var('cfg_file_path')

来调用php.ini文件      

延长= pdo.so

     

延长= pdo_mysql.so

3 个答案:

答案 0 :(得分:4)

PHP有两个独立的.ini文件。一个用于命令行,一个用于非命令行。您可能只在命令行.ini文件中加载了PDO扩展。找到.ini文件并确保已加载PDO扩展。您正在寻找以下几行。

extension=pdo.so
extension=pdo_mysql.so

如果您向我们提供您的操作系统,我们可以指导您到哪里查看。

答案 1 :(得分:1)

好的,这是我解决这个问题的方法,以防其他人遇到同样的问题。

我创建了一个php.ini文件的副本,删除了原始文件,通过Web浏览器刷新了 test.php 文件,将php.ini文件复制回原来的位置。

这就解决了。

答案 2 :(得分:1)

在Ubuntu 13.04下,我不知道它是否与其他操作系统相同但是

移动pdo文件
  

的/ var / lib中/ PHP5 /模块/ apache2的/ enabled_by_admin

  

/ var / lib / php5 / modules / apache2 / enabled_by_maint

让php在这个圣诞节快乐,并在phpinfo()上正确声明。