【问题标题】:PDO will not run since upgrading PHP to 5.4.22将 PHP 升级到 5.4.22 后 PDO 将无法运行
【发布时间】:2014-01-02 16:34:57
【问题描述】:

我最近刚刚将服务器的 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

phpinfo(); 在 PHP 文件中声明我在 PHP Version 5.3.10

如何在我的终端 # php -vPHP 5.4.22

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

【问题讨论】:

  • @JakeGould 已经读过这个问题,似乎对我的情况没有帮助 =/
  • 你看到在 php.ini 中启用了行 extension=pdo.so 吗?
  • 嗯,我看到extension=pdo.so 它没有启用写在它旁边,但它就在那里。
  • 我的意思是,它是以 ; 开头的吗? ?

标签: php mysql pdo


【解决方案1】:

您的问题表明您正在通过命令行检查 PHP 版本。但是通过 Web 浏览器的 PHP 将使用加载到 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 配置的一部分。环顾四周以找到设置的位置。然后只需将新模块的路径设置为我实际安装的任何位置。

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多