编译安装完以后启动php,Linux中为已经编译安装后的PHP安装扩展详解

### 前言

在刚开始安装php的时候我们不可能一下把所有的扩展全部装完但在开发的时候我们又需要某个扩展,这时候我们不可能把php重新卸载--加上对应扩展--安装---那样太麻烦了,下面给大家介绍为安装好的php添加或者的方法。

这里我以安装`memcached`扩展为例

查看你是否安装某个扩展

1.使用命令 `php -m`

列出的扩展就是已安装的

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318143322671.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

2.使用函数phpinfo()

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318143511423.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

**安装memcached**

在这个网站下找到memcached扩展

[https://pecl.php.net/](https://pecl.php.net/)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318143709335.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

点击memcached扩展

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318143855931.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

列出可下载的版本,复制其链接地址

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318144826984.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

通过wget下载memcached扩展

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020031814445378.png)

下载完成后是一个.tgz的文件,这种文件相当于 tar.gz

我们解压拆包即可

`gunzip memcached-3.1.5.tgz`

`tar xf memcached-3.1.5.tar

`解压完成后进入到扩展目录

`cd memcached-3.1.5`

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318145359815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

并没有configure,这怎么安装?

当我们要为已经编译安装好的php添加扩展时,我们要通过phpize辅助

phpize会根据当前扩展和php的版本为其添加一个configure文件,phpize存放在php的安装路径bin目录下,如我的

`/usr/local/php/bin/phpize`

扩展目录输入 /usr/local/php/bin/phpize

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318150131387.png)

此时已经生成了一个configure文件

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318150253591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

此时执行

`./configure --with-php-config=/usr/local/php/bin/php-config`

将扩展添加到php

在编译的过程中报错了

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318150559937.png)

大概意思是memcached依赖于libmemcached,接下来我们需要安装libmemcached并在编译的过程中告诉memcached libmemcached的路径,如果你安装的其他扩展没有依赖问题,可以跳过这一步

下载libmemcached

[https://libmemcached.org/libMemcached.html](https://libmemcached.org/libMemcached.html)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318150950231.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

选择版本复制链接地址

[https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz](https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318151115919.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

下面的操作就是下载--解压--拆包--编译安装,这里不在详细叙述

如果你在安装libmemcached中出现` clients/memflush.cc: In function ‘int main(int, char**)’....

`

参照这个人的博客

[https://blog.csdn.net/hualaoshuan/article/details/91891225](https://blog.csdn.net/hualaoshuan/article/details/91891225)

安装libmemcached后我们继续安装memcached

1.`cd /usr/local/src/memcached-3.1.5

`

由于memcached依赖于libmemcached我们在后面添加了libmemcached的安装路径

2.`./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached

`

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020031816244319.png)

安装

3.`make && make install`

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318162842650.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

到这一步安装成功,并且给出了扩展的路径/usr/local/php/lib/php/extension........

查看这个路径有个memcached.so文件

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020031816315158.png)

到这里我们要将memcached扩展添加到php.ini中 这里有两种方式

第一种直接添加扩展的绝对路径,如下

将这个文件的路径添加到php.ini中

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318163716163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

第二种 在php.ini的大概750几行,添加存储扩展的目录

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318170126156.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

在开启对应扩展,去掉extension前面的分号,如果没有对应扩展需自行添加

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318170239787.png)

重启php

`ps -aux | grep php`

`pkill -9 php`

`cd /usr/local/php/sbin`

`./php-fpm`

重启nginx

`cd /usr/local/nginx/sbin`

`./nginx -s reload`

到此php扩展添加成功 其他扩展类似

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200318170429161.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTE0MzQ4MQ==,size_16,color_FFFFFF,t_70)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值