自从将PHP升级到5.4.22后,PDO将无法运行

时间:2013-12-15 05:04:54

标签: php mysql pdo

我刚刚将服务器的PHP版本升级到5.4.22,现在每个使用PDO的脚本都不起作用。

我的PHP脚本示例不起作用:

<?php
    $dsn = 'mysql:dbname=testDB;host=127.0.0.1';
    $user = '[hidden]';
    $password = '[hidden]';
    try {
        $pdo = new PDO($dsn, $user, $password);

    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
        exit;
    }
?>

当我运行脚本时,我得到:Fatal error: Class 'PDO' not found,我为每个创建连接的脚本都会收到同样的错误。

我对puTTY进行了检查以检查PDO是否存在,并且发现了这一点:

root@cpanel [~]# php -m | grep -i pdo
PDO
pdo_mysql
pdo_sqlite

我的 php.ini

extension=pdo.so
extension=pdo_sqlite.so
; sqlite was removed by EasyApache v3.22.24 on Sat Dec 14 23:24:10 2013 (PHP v5.4.x incompatibility)
; extension=sqlite.so
extension=pdo_mysql.so
PHP文件声明中的

phpinfo();即时PHP Version 5.3.10

我的终端# php -v如何说PHP 5.4.22

所以这让我很困惑,为什么我会得到两个版本。

1 个答案:

答案 0 :(得分:1)

您的问题表明您正在通过命令行检查PHP版本。但PHP通过Web浏览器将使用加载到Apache的模块,这是一个完全不同的事情。因此,请检查通过Web浏览器加载的PHP脚本中phpinfo();的输出。是否安装了PDO或通过它安装显示?

您的Apache配置文件在哪里查找目录mods-available和文件php5.load。在Ubuntu 12.04下,它将在这条道路上:

/etc/apache2/mods-available/php5.load

内容应该是:

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

该文件中的路径是否与新编译的libphp5.so的安装位置匹配?

此外,LoadModule php5_module行可能是主Apache配置的一部分。环顾四周寻找设置的位置。然后只需将新模块的路径设置为我,无论它实际安装在哪里。