1

我正在为php安装mysqlnd_ms包,但是make命令报错:

make: *** [php_mysqlnd_ms.lo] Error 1

ERROR: `make' failed

我的 PHP 版本:

[root@uoo insFile]# php -v

PHP 5.6.12 (cli)(构建时间:2015 年 8 月 30 日 00:04:44) 版权所有 (c) 1997-2015 The PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2015 Zend Technologies

我的操作系统:

[root@uoo ~]# cat /etc/centos-release

CentOS Linux 版本 7.2.1511(核心)

已安装的所有 php 模块:

[root@uoo insFile]# php -m 
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
ereg
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib

[Zend Modules]

这是我使用 pecl 的安装过程:

[root@uoo insFile]# pecl install mysqlnd_ms

正在下载 mysqlnd_ms-1.5.2.tgz ...

开始下载mysqlnd_ms-1.5.2.tgz(385916字节)

..................................................... ................................完成:385,916 字节

36个源文件,构建

运行:phpize

配置:

PHP API 版本:20131106

Zend 模块 API 编号:20131226

Zend Extension API 编号:220131226

在 /tmp/pear/temp/pear-build-rootvgIJMs/mysqlnd_ms-1.5.2 中构建

运行:/tmp/pear/temp/mysqlnd_ms/configure

检查处理长行的 grep 和 -e... /usr/bin/grep

检查 egrep... /usr/bin/grep -E

检查不截断输出的 sed... /usr/bin/sed

正在检查 cc ... cc

检查 C 编译器是否工作......是的

检查 C 编译器默认输出文件名... a.out

检查可执行文件的后缀...

检查我们是否在交叉编译...否

检查目标文件的后缀... o

检查我们是否正在使用 GNU C 编译器...是的

检查 cc 是否接受 -g... 是

检查 cc 选项以接受 ISO C89... 不需要

检查如何运行 C 预处理器... cc -E

检查 icc... 不

检查 suncc... 否

检查 cc 是否同时理解 -c 和 -o ......是的

检查系统库目录... lib

检查编译器是否支持 -R... 否

检查编译器是否支持 -Wl,-rpath,... 是

检查构建系统类型... x86_64-unknown-linux-gnu

检查主机系统类型... x86_64-unknown-linux-gnu

检查目标系统类型... x86_64-unknown-linux-gnu

检查 PHP 前缀... /usr/local/php

检查 PHP 包括... -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/ usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib

检查 PHP 扩展目录... /usr/local/php/lib/php/extensions/no-debug-zts-20131226

检查 PHP 安装的头文件前缀... /usr/local/php/include/php

检查是否启用调试...否

检查 zts 是否启用...否

检查 re2c ...不

配置:警告:如果要重新生成 PHP 解析器,则需要 re2c 0.13.4 或更高版本。

检查 gawk... gawk

检查是否启用 mysqlnd_ms 支持...是的,共享

检查是否在 mysqlnd_ms 中启用表过滤器...否

检查是否通过mysqlnd_ms中的mysqlnd_qc查询缓存...否

检查 cc 使用的 ld... /usr/bin/ld

检查链接器 (/usr/bin/ld) 是否为 GNU ld... 是

检查 /usr/bin/ld 选项以重新加载目标文件... -r

检查 BSD 兼容的 nm... /usr/bin/nm -B

检查 ln -s 是否有效...是的

检查如何识别依赖库... pass_all

检查 ANSI C 头文件...是的

检查 sys/types.h... 是

检查 sys/stat.h... 是的

检查stdlib.h ...是的

检查 string.h... 是的

检查内存.h ...是的

检查strings.h ...是的

检查 inttypes.h ... 是的

检查stdint.h ...是的

检查 unistd.h ...是的

检查 dlfcn.h 的可用性...是的

检查 dlfcn.h 是否存在...是的

检查 dlfcn.h... 是的

检查命令行参数的最大长度... 1572864

检查命令以解析 cc 对象的 /usr/bin/nm -B 输出...好的

检查 objdir ... .libs

检查 ar...ar

检查ranlib...ranlib

检查脱衣...脱衣

检查 cc 是否支持 -fno-rtti -fno-exceptions... 否

检查 cc 选项以生成 PIC... -fPIC

检查 cc PIC 标志 -fPIC 是否有效...是

检查 cc static flag -static 是否有效...否

检查 cc 是否支持 -c -o file.o... 是

检查 cc 链接器 (/usr/bin/ld -m elf_x86_64) 是否支持共享库...是

检查 -lc 是否应显式链接到... 否

检查动态链接器特性... GNU/Linux ld.so

检查如何将库路径硬编码到程序中...立即

检查是否可以剥离库......是的

检查 libtool 是否支持共享库...是的

检查是否构建共享库...是的

检查是否构建静态库...否

创建 libtool

将配置标签“CXX”附加到 libtool

配置:创建 ./config.status

config.status:创建 config.h

运行:制作

/bin/sh /tmp/pear/temp/pear-build-rootr7CW9Q/mysqlnd_ms-1.5.2/libtool --mode=compile cc

-我。-I/tmp/pear/temp/mysqlnd_ms -DPHP_ATOM_INC

-I/tmp/pear/temp/pear-build-rootr7CW9Q/mysqlnd_ms-1.5.2/include

-I/tmp/pear/temp/pear-build-rootr7CW9Q/mysqlnd_ms-1.5.2/main

-I/tmp/pear/temp/mysqlnd_ms -I/usr/local/php/include/php

-I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM

-I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext

-I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2

-c /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c -o php_mysqlnd_ms.lo

mkdir .libs

抄送-I。-I/tmp/pear/temp/mysqlnd_ms -DPHP_ATOM_INC
-I/tmp/pear/temp/pear-build-rootr7CW9Q/mysqlnd_ms-1.5.2/include -I/tmp/pear/temp/pear-build-rootr7CW9Q/mysqlnd_ms -1.5.2/main -I/tmp/pear/temp/mysqlnd_ms -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php /include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date /lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c -fPIC -DPIC -o .libs/php_mysqlnd_ms.o /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:在函数中' zif_mysqlnd_ms_get_last_used_connection':

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:293:2:警告:传递“zval_to_mysqlnd”的参数 2 从没有强制转换的指针中生成整数 [默认启用]

if (!(proxy_conn = zval_to_mysqlnd(handle TSRMLS_CC))) { ^ 在 /tmp/pear/temp/mysqlnd_ms/mysqlnd_ms.h:40:0 包含的文件中,

来自/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:34:/usr/local/php/include/php/ext/mysqlnd/mysqlnd_reverse_api.h:37:18:注意:预期为“无符号整数”,但参数为输入“无效***”</p>

PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv, const unsigned int client_api_capabilities, unsigned int * save_client_api_capabilities TSRMLS_DC);

^ /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:293:2:错误:函数“zval_to_mysqlnd”的参数太少</p>

if (!(proxy_conn = zval_to_mysqlnd(handle TSRMLS_CC))) { ^ 在 /tmp/pear/temp/mysqlnd_ms/mysqlnd_ms.h:40:0 包含的文件中,

来自/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:34:/usr/local/php/include/php/ext/mysqlnd/mysqlnd_reverse_api.h:37:18:注意:在这里声明

PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv, const unsigned int client_api_capabilities, unsigned int * save_client_api_capabilities TSRMLS_DC);

^ /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:在函数'zif_mysqlnd_ms_get_last_gtid'中:

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:333:2:警告:传递“zval_to_mysqlnd”的参数 2 从没有强制转换的指针中生成整数 [默认启用] if (!(proxy_conn = zval_to_mysqlnd(handle TSRMLS_CC)) ) { ^ 在 /tmp/pear/temp/mysqlnd_ms/mysqlnd_ms.h:40:0 中包含的文件中,

来自/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:34:/usr/local/php/include/php/ext/mysqlnd/mysqlnd_reverse_api.h:37:18:注意:预期为“无符号整数”,但参数为type 'void ***'<br> PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv, const unsigned int client_api_capabilities, unsigned int * save_client_api_capabilities TSRMLS_DC);

^ /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:333:2:错误:函数“zval_to_mysqlnd”的参数太少</p>

if (!(proxy_conn = zval_to_mysqlnd(handle TSRMLS_CC))) { ^ 在 /tmp/pear/temp/mysqlnd_ms/mysqlnd_ms.h:40:0 包含的文件中,

来自/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:34:

/usr/local/php/include/php/ext/mysqlnd/mysqlnd_reverse_api.h:37:18:注意:在这里声明

PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv, const unsigned int client_api_capabilities, unsigned int * save_client_api_capabilities TSRMLS_DC);

^ /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:373:3: 警告:传递 'ms_ori mysqlnd_conn_methods->store_result' 的参数 2 从指针中生成整数而无需强制转换 [默认启用▽] if (!(res = MS_CALL_ORIGINAL_CONN_DATA_METHOD(store_result)(conn TSRMLS_CC))) { ^ /tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:373:3:注意:预期为“unsigned int”,但参数类型为“void ***”</p >

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:373:3:错误:函数“ms_orig_mysqlnd_conn_methods->store_result”的参数太少</p>

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:在函数'zif_mysqlnd_ms_set_qos'中:

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:506:2: 警告:传递 'zval_to_mysqlnd' 的参数 2 从没有强制转换的指针生成整数 [默认启用] if (!(proxy_conn = zval_to_mysqlnd(handle TSRMLS_CC)) ) {

^

在 /tmp/pear/temp/mysqlnd_ms/mysqlnd_ms.h:40:0 包含的文件中,

来自/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:34:/usr/local/php/include/php/ext/mysqlnd/mysqlnd_reverse_api.h:37:18:注意:预期为“无符号整数”,但参数为输入“无效***”</p>

PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv, const unsigned int client_api_capabilities, unsigned int * save_client_api_capabilities TSRMLS_DC);

^

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:506:2:错误:函数“zval_to_mysqlnd”的参数太少</p>

if (!(proxy_conn = zval_to_mysqlnd(handle TSRMLS_CC))) {

^

在 /tmp/pear/temp/mysqlnd_ms/mysqlnd_ms.h:40:0 包含的文件中,

来自/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:34:/usr/local/php/include/php/ext/mysqlnd/mysqlnd_reverse_api.h:37:18:注意:在这里声明

PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv, const unsigned int client_api_capabilities, unsigned int * save_client_api_capabilities TSRMLS_DC);

^

make: *** [php_mysqlnd_ms.lo] 错误 1

错误:“制作”失败

4

3 回答 3

1

尝试这个:

svn checkout http://svn.php.net/repository/pecl/mysqlnd_ms/trunk/ && cd trunk && phpize && ./configure --with-php-config=/usr/bin/php-config && make

然后运行make install

然后重新启动你的apache。

我只在php5.6上试过这个。我不确定这是否适用于其他版本。

于 2016-06-01T10:47:10.663 回答
0

我一直在谷歌上寻找几个小时终于克拉克的解决方案在 cpanel 上工作了一点点调整

对于 cpanel,我将命令更改为:

svn checkout http://svn.php.net/repository/pecl/mysqlnd_ms/trunk/ && cd trunk && /opt/cpanel/ea-php56/root/usr/bin/phpize && ./configure --with-php-config=/opt/cpanel/ea-php56/root/usr/bin/php-config && make; make install

您还需要在以下位置创建和添加扩展名 /opt/cpanel/ea-php56/root/usr/lib64/php/modules/

cd /opt/cpanel/ea-php56/root/usr/lib64/php/modules/
cat >> mysqlnd_ms.ini << EOF
extension=mysqlnd_ms.so
EOF

你可以看到结果php -m

于 2017-12-04T13:50:00.617 回答
0

我能够通过 RPM 包安装成功安装它。以下链接可能会对您有所帮助,具体取决于您当前拥有的操作系​​统和 PHP 版本。我提到这个细节,因为这最初是几年前发布的。

www.rpmfind.net

centos.pkgs.org

我只是按照 CentOS 软件包的说明和在 Redhat 6.9 PHP 5.6 服务器上安装的 php pecl-svn 扩展没有问题。希望同样适用于你。

于 2019-02-27T15:09:32.687 回答