php rpc 框架 yar教程----安装
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扩展了
