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