6

我知道在整个 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 安装的标准配置。

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

4

3 回答 3

1

我也有类似的问题。我正在使用 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)
服务器构建时间:8 月 19 日2014 10:33:30
Cpanel::Easy::Apache v3.26.5 rev9999

于 2014-08-19T17:49:32.687 回答
0

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

 # rpm -qa| grep "pdo"

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

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

# yum install php53u-pdo
于 2013-10-10T17:21:03.533 回答
0

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

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

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

于 2015-07-05T23:44:55.040 回答