yar是php的一个rpc框架。
在yar的GitHub主页上有安装的教程,虽然主页上最简单的安装方法只需要一句代码,但是因为具体每个Linux系统的环境不同,在安装过程可能有其他的依赖关系需要同步进行安装和配置,安装过程也并非只用一句命令就可以安装完成那么简单。
下面是我的安装过程,我的环境是centeros 7,web服务器是Nginx,和PHP7。
下面开始我的安装过程。
因为yar的GitHub官网上,最简单的安装方案是通过pecl进行安装的,我们下面就用pecl的方式进行安装。
首先检查一下系统有没有安装pecl:
#pecl -V
![51b20c600f0928d6899aff064bc5b8f9.png](https://img-blog.csdnimg.cn/img_convert/51b20c600f0928d6899aff064bc5b8f9.png)
上图是系统已经有pecl的情况。
如果系统没有pecl,则是下面的情况:
![445479ceae77a028f04546c94d757451.png](https://img-blog.csdnimg.cn/img_convert/445479ceae77a028f04546c94d757451.png)
要使用下面的命令通过yum安装pecl:
#yum install php-devel php-pear
![2b24ad3405eefab4cce76a890b14ab00.png](https://img-blog.csdnimg.cn/img_convert/2b24ad3405eefab4cce76a890b14ab00.png)
用pecl search yar 搜索一下,pecl上的yar是哪个版本的:
这里搜搜到的是2.0.5版本,是最新的。
![0095713800a343825c06289f4841677b.png](https://img-blog.csdnimg.cn/img_convert/0095713800a343825c06289f4841677b.png)
开始执行 pecl install yar 命令进行安装:
![bdedfe741c4b0988518c9fdde9fbcaec.png](https://img-blog.csdnimg.cn/img_convert/bdedfe741c4b0988518c9fdde9fbcaec.png)
注意红框中的提示,因为yar要用到msgpack,这里是询问要不要启用msgpack扩展,我选择了启用。
最终安装失败,有下面这个错误提示,意思是需要重新安装libcurl
![71fea80e77ae5f9474a0c67eee083b28.png](https://img-blog.csdnimg.cn/img_convert/71fea80e77ae5f9474a0c67eee083b28.png)
执行 yum install curl curl-devel 重新安装一下 curl
![a8371fe9d4ccccb041039d825fa0b0c1.png](https://img-blog.csdnimg.cn/img_convert/a8371fe9d4ccccb041039d825fa0b0c1.png)
因为yar要用到msgpack,系统没有msgpack扩展,所以,顺便把msgpack扩展先安装上。
#pecl install msgpack
![39830148120bd1e46b0619f304e848f4.png](https://img-blog.csdnimg.cn/img_convert/39830148120bd1e46b0619f304e848f4.png)
msgpack安装成功,但是,细看最终的提示,还需要手动把msgpack的扩展配置到php.ini文件中
![a87b49b868f6b75c18cd2269e45de2ca.png](https://img-blog.csdnimg.cn/img_convert/a87b49b868f6b75c18cd2269e45de2ca.png)
现在再次执行pecl install yar 命令,终于成功安装
![ed1e6c985f9aec23b10ac3a4adc73908.png](https://img-blog.csdnimg.cn/img_convert/ed1e6c985f9aec23b10ac3a4adc73908.png)
用whereis php 查找到php.ini文件的路径是/etc/php.ini
执行vi /etc/php.ini ,并在文件中添加下面的扩展配置
![4eb5edc0bd84fb6760b9f46a17af9bcd.png](https://img-blog.csdnimg.cn/img_convert/4eb5edc0bd84fb6760b9f46a17af9bcd.png)
用systemctl restart php-fpm和systemctl restart nginx 重启php和nginx。
然后用phpinfo()方法通过网页查看php扩展的启用情况,发现msgpack已经启用,但是没找到yar
![d960cc28d2ea9498f94b04df9a2946cd.png](https://img-blog.csdnimg.cn/img_convert/d960cc28d2ea9498f94b04df9a2946cd.png)
用下面的命令,查看一下php针对yar有哪些错误:
#php -ir | grep yar
发现有下面的错误提示:意思就是在加载yar扩展的时候,找不到json_decode这个扩展,但是,我平时在php代码里用json_encode和json_decode方法都没有问题啊,怎么会找不到json这个扩展呢?在网上搜索了一下,发现这是因为扩展加载的顺序原因,php是先加载php.ini里的扩展,然后再加载json.ini,这样在加载yar的时候,就发现缺少了json.so
![393ce7055ffbe1b797df88fba500aefc.png](https://img-blog.csdnimg.cn/img_convert/393ce7055ffbe1b797df88fba500aefc.png)
解决方法:,在php.ini ,加载yar.so扩展的前面先加载json.so,重新启动php和nginx。
再查看phpinfo的情况,发现已经可以看到yar扩展了
![b7c26819d956a08ffee297a733a589c5.png](https://img-blog.csdnimg.cn/img_convert/b7c26819d956a08ffee297a733a589c5.png)