注意: 本文的安裝方法適合php7.0以上的版本, 如果想查看php5.x版本yar的安裝, 請點擊移步本站另一篇手動安裝方法
體驗RPC框架Yar需要三步
裝二進制打包協議msgpack
裝yar拓展和依賴
寫demo測試
安裝PHP拓展包有很多種方式,當然沒什麽是比pecl更加來得暴力,用這個之前要確認phpize是否存在
find / -name phpize
如果phpize不存在
yum install php-devel
如果pecl沒安裝, 先進入到php的執行文档目錄
curl -o go-pear.php http://pear.php.net/go-pear ./php go-pear.php # 看到一堆提示, 直接回車即可
安裝msgpack
pecl install msgpack
提示如下錯誤:
Failed to download pecl/msgpack within preferred state "stable", latest release is version 0.5.6, stability "beta", use "channel://pecl.php.net/msgpack-0.5.7" to install
那麽就按照提示
pecl install channel://pecl.php.net/msgpack-0.5.7
安裝跳了一大堆編譯過程過程,省略ING
只關心後幾行
Build process completed successfully Installing '/usr/include/php/ext/msgpack/php_msgpack.h'Installing '/usr/lib64/php/modules/msgpack.so'install ok: channel://pecl.php.net/msgpack-0.5.6configuration option "php_ini" is not set to php.ini locationYou should add "extension=msgpack.so" to php.ini
# 命令行下輸入 vi /etc/php.ini # 以下是配置文档内容 extension=msgpack.so
保存退出。
OK,msgpack裝好了
安裝Yar
可以使用pecl命令自動安裝yar:
pecl install yar
中途會有提示你Enable Msgpack Supports
這個就是上文裝的二進制打包協議。輸入yes
如果很不幸,出現了
configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/ERROR: `/var/tmp/yar/configure --enable-msgpack=yes' failed`
這邊輸入如下命令
yum -y install curl-devel
解決上處報錯問題。
pecl install yar #vi /etc/php.ini
文档添加
extension=yar.so
重啓php-fpm
service php-fpm restart
重啓的時候報錯如下
NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/yar.so' - /usr/lib64/php/modules/yar.so: undefined symbol: php_json_encode in Unknown on line 0
可以看出問題了,yar模塊是依賴msgpack.so和json.so的,必須得保证msgpack.so和json.so放在yar.so前面
解決辦法如下:
find / -name json.ini mv /etc/php.d/json.ini /etc/php.d/json.ini.bak vi /etc/php.ini
文档添加
extension=json.so
service php-fpm restart
再次重啓,成功!
可以用phpinfo()函數來檢查模塊是否已被添加