php编译安装mysqli扩展,报fatal error: ext/mysqlnd/mysqlnd.h: No such file or directory

人走茶凉 提交于 2019-12-09 11:43:43

编译安装php mysqli扩展

phpize
./configure && make && make install

遇到如下报错信息。

/bin/sh /usr/local/src/php-7.2.11/ext/mysqli/libtool --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/local/src/php-7.2.11/ext/mysqli -DPHP_ATOM_INC -I/usr/local/src/php-7.2.11/ext/mysqli/include -I/usr/local/src/php-7.2.11/ext/mysqli/main -I/usr/local/src/php-7.2.11/ext/mysqli -I/usr/local/server/php/include/php -I/usr/local/server/php/include/php/main -I/usr/local/server/php/include/php/TSRM -I/usr/local/server/php/include/php/Zend -I/usr/local/server/php/include/php/ext -I/usr/local/server/php/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /usr/local/src/php-7.2.11/ext/mysqli/mysqli.c -o mysqli.lo 
mkdir .libs
 cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/local/src/php-7.2.11/ext/mysqli -DPHP_ATOM_INC -I/usr/local/src/php-7.2.11/ext/mysqli/include -I/usr/local/src/php-7.2.11/ext/mysqli/main -I/usr/local/src/php-7.2.11/ext/mysqli -I/usr/local/server/php/include/php -I/usr/local/server/php/include/php/main -I/usr/local/server/php/include/php/TSRM -I/usr/local/server/php/include/php/Zend -I/usr/local/server/php/include/php/ext -I/usr/local/server/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/php-7.2.11/ext/mysqli/mysqli.c  -fPIC -DPIC -o .libs/mysqli.o
In file included from /usr/local/src/php-7.2.11/ext/mysqli/mysqli.c:34:0:
/usr/local/src/php-7.2.11/ext/mysqli/php_mysqli_structs.h:42:33: **fatal error: ext/mysqlnd/mysqlnd.h: No such file or directory**
 #include "ext/mysqlnd/mysqlnd.h"
                                 ^
compilation terminated.
make: *** [mysqli.lo] Error 1

重点是看这句。fatal error: ext/mysqlnd/mysqlnd.h: No such file or directory ,在php扩展包里,找不到mysqlnd.h 库文件。

但是查看了mysqlnd目录后,发现文件都在。

这个时候在看报错信息里。/usr/local/src/php-7.2.11/ext/mysqli/php_mysqli_structs.h:42:33 ,进入这个文件,查看42行。

#include "ext/mysqlnd/mysqlnd.h

这个是用C语言写的。从相对路径ext 加载库文件mysqlnd.h ,但是mysqli目录里没有ext,这块我们通过创建软链接的方式来解决:

我主机里的php安装包放在/usr/local/src/目录里

ln -s /usr/local/src/php-7.2.11/ext/  /usr/local/src/php-7.2.11/ext/mysqli

软链接创建后,当在/usr/local/src/php-7.2.11/ext/mysqli 需要加载ext 目录的文件时,就会直接进入/usr/local/src/php-7.2.11/ext/ 去加载了。

现在重新编译安装

make clean	//先清除一下
./configure && make && make install

出现下面的提示信息,代表安装完成。

然后进入php.ini 添加扩展指令

最后重启php服务,安装完成。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!