为什么使用“sudo pecl install pdo”无法运行?

为什么使用“sudo pecl install pdo”无法运行?

这里是日志文件,make 不会运行。我按照 Ronald Bauman 的说明进行操作这里。下面您可以找到失败的地方。我该如何调试它?

/bin/bash /tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/libtool --mode=compile cc  -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/PDO/pdo.c -o pdo.lo
libtool: compile:  cc -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/PDO/pdo.c  -fPIC -DPIC -o .libs/pdo.o
/bin/bash /tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/libtool --mode=compile cc  -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/PDO/pdo_dbh.c -o pdo_dbh.lo
libtool: compile:  cc -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootq7RxQ6/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/PDO/pdo_dbh.c  -fPIC -DPIC -o .libs/pdo_dbh.o
/tmp/pear/temp/PDO/pdo_dbh.c: In function ‘pdo_stmt_instantiate’:
/tmp/pear/temp/PDO/pdo_dbh.c:410:8: error: ‘zval’ has no member named ‘refcount’
/tmp/pear/temp/PDO/pdo_dbh.c:411:8: error: ‘zval’ has no member named ‘is_ref’
/tmp/pear/temp/PDO/pdo_dbh.c: In function ‘pdo_stmt_construct’:
/tmp/pear/temp/PDO/pdo_dbh.c:435:6: error: ‘zend_fcall_info’ has no member named ‘object_pp’
/tmp/pear/temp/PDO/pdo_dbh.c:458:6: error: ‘zend_fcall_info_cache’ has no member named ‘object_pp’
/tmp/pear/temp/PDO/pdo_dbh.c: In function ‘zim_PDO_setAttribute’:
/tmp/pear/temp/PDO/pdo_dbh.c:752:12: error: ‘zval’ has no member named ‘refcount’
/tmp/pear/temp/PDO/pdo_dbh.c: In function ‘zim_PDO_getAttribute’:
/tmp/pear/temp/PDO/pdo_dbh.c:818:28: error: ‘zval’ has no member named ‘refcount’
/tmp/pear/temp/PDO/pdo_dbh.c: In function ‘pdo_hash_methods’:
/tmp/pear/temp/PDO/pdo_dbh.c:1122:24: warning: assignment discards qualifiers from pointer target type
/tmp/pear/temp/PDO/pdo_dbh.c:1126:20: warning: assignment discards qualifiers from pointer target type
make: *** [pdo_dbh.lo] Error 1
ERROR: `make' failed

答案1

php5-mysqlphp5-pgsqlphp5-sqlite软件包将随附 PDO 扩展。无需 Pear 即可实现此目的。

sudo apt-get install php5-mysql php5-postgres php5-sqlite

答案2

尝试在 Debian wheezy 下安装 drupal7 时,我遇到了与此处显示的相同的 make 错误。

初始错误是:PHP 致命错误:在 /usr/share/drupal7/includes/database/mysql/database.inc 第 42 行中未定义类常量‘MYSQL_ATTR_USE_BUFFERED_QUERY’

然后,使用“pecl install pdo”安装时出现上述错误。

按照此: http://drupal.org/node/784062#comment-2932820 这个问题被回避了。

答案3

您没有指定使用的 PHP 版本,所以我只是猜测原因。编译失败的最可能原因是您使用的 PECL 模块版本与 PHP 版本不兼容。

PHP 5.4 和 PHP 5.3 之间的 Zend 内部发生了变化,因此模块需要更新。

再加上PDO模块没有不再维持做出相当合理的假设,即您正在使用较旧的 PDO 模块和较新的 PHP,但由于我已经说明的原因,它将无法工作。

例如,只需使用发行版提供的模块(php5-mysql、php5-pgsql)。

相关内容