【问题标题】:Cannot install PDO on CentOS无法在 CentOS 上安装 PDO
【发布时间】:2013-10-18 13:57:49
【问题描述】:

我知道这个问题在整个 stackoverflow 中有几个实例,但我没有找到解决方案。

我正在使用 Apache 和 PHP 5.3 运行 CentOS

一个 .php 脚本给了我这个错误:

Fatal error: Class 'PDO' not found in ...

我运行了phpinfo();,页面上唯一存在“pdo”的地方是“配置命令”'--disable-pdo' 行。

我尝试了#yum install php-pdo,但不存在任何包。

我也尝试了#pecl install pdo,最后我得到了这些错误:

/root/tmp/pear/PDO/pdo_dbh.c: In function 'pdo_stmt_instantiate':
/root/tmp/pear/PDO/pdo_dbh.c:410: error: 'zval' has no member named 'refcount'
/root/tmp/pear/PDO/pdo_dbh.c:411: error: 'zval' has no member named 'is_ref'
/root/tmp/pear/PDO/pdo_dbh.c: In function 'pdo_stmt_construct':
/root/tmp/pear/PDO/pdo_dbh.c:435: error: 'zend_fcall_info' has no member named 'object_pp'
/root/tmp/pear/PDO/pdo_dbh.c:458: error: 'zend_fcall_info_cache' has no member named 'object_pp'
/root/tmp/pear/PDO/pdo_dbh.c: In function 'zim_PDO_setAttribute':
/root/tmp/pear/PDO/pdo_dbh.c:752: error: 'zval' has no member named 'refcount'
/root/tmp/pear/PDO/pdo_dbh.c: In function 'zim_PDO_getAttribute':
/root/tmp/pear/PDO/pdo_dbh.c:818: error: 'zval' has no member named 'refcount'
/root/tmp/pear/PDO/pdo_dbh.c: In function 'pdo_hash_methods':
/root/tmp/pear/PDO/pdo_dbh.c:1122: warning: assignment discards qualifiers from pointer target type
/root/tmp/pear/PDO/pdo_dbh.c:1126: warning: assignment discards qualifiers from pointer target type
make: *** [pdo_dbh.lo] Error 1
ERROR: `make' failed

然后在 php.net 文档上,它基本上说该软件包是自 PHP 5.1 以来 php 安装的标准配置。

我在 php.ini 中添加了 extension=pdo.so 行并重新启动了 Apache,但问题仍然存在。有什么建议吗?

【问题讨论】:

  • php-pdo 是 CentOS 软件包的正确名称。如果你做yum search php-pdo,它会出现吗?
  • 我从 yum search pdo 得到的唯一结果是一堆“casenoupdown”包。我最近也跑了 yum clean all 和 yum update
  • Do yum repolist -- 你在输出中得到updates 吗?
  • 更新 CentOS-6 - 更新

标签: php mysql pdo centos


【解决方案1】:

我不知道答案是否为时已晚,但如果有人发现此错误,我会发布。

首先,我在 Centos 7 中使用 yum 安装了 php-pdo。我查看了 phpinfo,它显示了 pdo 扩展名,但没有显示 pdo-mysql。

所以,如果您随后安装 php-mysql (yum install php-mysql),它将自动安装 pdo-mysql 扩展。

【讨论】:

    【解决方案2】:

    我也遇到过类似的问题。我正在使用 codeigniter 并收到“pdo_mysql.so not found”错误并尝试了一切来修复它。我必须通过谷歌搜索结果的前 10 页搜索多个查询。我发现很多人都有同样的问题,但由于某种原因,他们都没有答案/修复。通过所有这些阅读,我了解到“从 PHP 5.1.0 开始默认启用 PDO 和 PDO_SQLITE 驱动程序。”这让我想到,“也许我应该 从我的 php.ini 中删除 extension=pdo_mysql.so 和 pdo.so 行!”我认为 php 试图加载一个不再存在的扩展,因为它现在内置了。果然,解决了我所有的php错误。

    PHP 5.4.31 (cli)(构建时间:2014 年 8 月 19 日 10:38:48)
    Zend Engine v2.4.0,版权所有 (c) 1998-2014 Zend Technologies
    服务器版本:Apache/2.2.27 (Unix)
    服务器建成:2014 年 8 月 19 日 10:33:30
    Cpanel::Easy::Apache v3.26.5 rev9999

    【讨论】:

      【解决方案3】:

      我很确定您缺少 PHP_PDO 包。尝试通过运行以下命令找到 PDO 包:

       # rpm -qa| grep "pdo"
      

      我的显示php53u-pdo-5.3.26-1.ius.el5

      如果您使用的是 php 5.3,请尝试

      # yum install php53u-pdo
      

      【讨论】:

        猜你喜欢
        • 2016-05-05
        • 2015-02-02
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 2013-09-02
        • 2016-08-09
        • 2015-08-01
        相关资源
        最近更新 更多