linux使用php动态安装模块mysqli.so(ext/mysqlnd/mysqlnd.h: 没有那个文件或目录)

由于我先安装的php,再安装的mysql!

正常过程:
1、安装mysql
2、安装php configure时带–with-mysql参数

现在我不想重装,因此使用phpize动态安装mysqli,php版本为php-7.1.10

1先查看php下phpize路径

#切换到php安装目录
cd /usr/local/php
find ./ -name phpize
显示如下
./bin/phpize

得知路劲为/usr/local/php/bin/phpize

2切换到php源码包目录php-7.1.10下

cd ext/mysqli
#运行phpize在此目录下生成configure文件
/usr/local/php/bin/phpize
#configure
./configure --with-php-config=/usr/local/php/bin/php-config -with-mysqli=/usr/local/mysql/bin/mysql_config
#make
sudo make

make时出错如下

/home/phoenix/下载/php-7.1.10/ext/mysqli/php_mysqli_structs.h:42:36: fatal error: ext/mysqlnd/mysqlnd.h: 没有那个文件或目录

我们用编辑器打开php_mysqli_structs.h
这里写图片描述
解决办法:
方法一
在mysqli文件夹下新建ext子文件夹,并把mysqli文件夹的父文件夹下的mysqlnd复制到刚新建的文件夹下,再次运行

#make
sudo make
#make install
sudo make install
#make install运行后给出消息
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/

我们来到/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/目录下
发现多了mysqli.so

3、编辑php.ini

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303"
extension=mysqli.so

4、如果是niginx+php需重新启动php-fpm
如果是apache+php只需要重启httpd .(apache)


方法二
将Makefile复制到/home/phoenix/下载/php-7.1.10下

cd /home/phoenix/下载/php-7.1.10
sudo make
sudo make install//会出错

make install时会出错
自己手动安装

#sudo find ./ -name mysqli.so

找到mysqli.so(.so等同于win下.dll),将文件mysqli.so复制到/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303目录下

cp ./ext/mysqli/modules/mysqli.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/

剩下步骤同上

你可能感兴趣的:(php)