设为首页 收藏本站
查看: 806|回复: 0

[经验分享] 给PHP安装amqp扩展

[复制链接]

尚未签到

发表于 2017-3-24 12:30:56 | 显示全部楼层 |阅读模式
  有史以来最坑爹的一次扩展安装,不晓得诸位有没有尝试过…………各种报错啊!有木有?!¥#@%%&*……
  捣鼓半天,只编译了个0.1.x的扩展版本,瞅了下,擦,函数少的可怜啊- -|||
  不行,继续~
  经过一天的努力,老天总算开眼了,赶紧总结下吧~
  ----------------------------------------------- 我是分割线 ---------------------------------------------------
  AMQP——高级消息队列协议,目前比较有名气的实现大概就是大名鼎鼎的RabbitMQ了。
  (不了解的童鞋先看下我这篇转载吧:《[RabbitMQ+Python入门经典] 兔子和兔子窝》)
  PHP扩展当然还是官方推荐的好了。OK,就它了http://php.net/manual/en/book.amqp.php
  To install the AMQP PHP extension, you must first install the » librabbitmq library. You will need the 0-9-1 version of the rabbitmq-c client library, linked to the rabbitmq-codegen version that corresponds to the version of thebroker you are using. Use the following steps to download and install the library:
  

   # Download the rabbitmq-c library @ version 0-9-1
   hg clone http://hg.rabbitmq.com/rabbitmq-c/rev/b01825ecc112 rabbitmq-c
   cd rabbitmq-c
   # Add the codegen requirement. To find the full list, go here: http://hg.rabbitmq.com/rabbitmq-codegen/tags
   # and copy the URL for the appropriate broker version.
   hg clone http://hg.rabbitmq.com/rabbitmq-codegen/rev/16bbcb711380 codegen
   # Configure, compile and install
   autoreconf -i && ./configure && make && sudo make install
  扩展是C写的,由于C与RabbitMQ通信一般需要依赖rabbitmq-c库(也就是librabbitmq),所以编译扩展前需要先装依赖库。好吧,那就按要求装吧~
  原文是用hg工具,需要装mercurial(一个轻量级的版本控制系统),这里就不介绍了,我们还是用传统的方法。
  首先,到这里下载rabbitmq-c的v0.2版:https://github.com/alanxz/rabbitmq-c/tagsOR 直接shell:
  wget https://github.com/alanxz/rabbitmq-c/tarball/0.2
  tar zxvf 0.2
  cd alanxz-rabbitmq*
  (为什么0.2版?好吧,我也不知道,总之它的各版本兼容性非常不好,经过我屡试屡败屡败试……发现0.2版还算顺利 - -)
  接着,到这里下载最新版的codegen配件:https://github.com/rabbitmq/rabbitmq-codegen/downloads,OR 直接shell:
  wget https://github.com/rabbitmq/rabbitmq-codegen/tarball/master
  tar zxvf master
  mv rabbitmq-* codegen
  (上面这步必须要把其解压,并放到rabbitmq-c的目录中的codegen目录中,也就是上面最后那步做的。)
  按照手册介绍,先进行:
  autoreconf -i
  如果你一切顺利,没有报错,那么恭喜了!后面则是常规操作:
  ./configure && make && make install
  如果仍未报错,哇塞,我只能说你NB!可以直接进行扩展编译了。
  不过大部分情况下你或许和我一样遇到各种各样报错信息,那么后面我们再说,这里先把编译扩展顺带说完。
  直接回到官方下载(我下载的是1.0.0版,新的版本我没事试,应该也可以的)http://pecl.php.net/package/amqp,并编译成so文件 OR shell:
  wget http://pecl.php.net/get/amqp-1.0.0.tgz
  tar zxvf amqp-1.0.0.tgz
  cd amqp-1.0.0
  /usr/local/php/bin/phpize
  ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
  make && make install
  (/usr/local/php/bin/phpize 和/usr/local/php/bin/php-config 为实际php所在目录,如果不清楚,可以whereis php查看。)

  如果之前的步骤顺利,这步应该没什么问题,直接在php.ini中添加生成的amqp.so,重启httpd或php-cgi即可,不再赘述。
DSC0000.jpg

  ---------------------------------------------------我是分割线----------------------------------------------------
  好了,如果你和我一样悲催,从autoreconf -i就开始作死地报错,那么我这里提供一些可能有用的处理方法。
  autoreconf 时有可能遇到如下报错:
  onfigure.ac:60: error: possibly undefined macro: AS_CASE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:69: error: possibly undefined macro: AS_IF
configure.ac:92: error: possibly undefined macro: AC_PATH_PROGS_FEATURE_CHECK
configure.ac:97: error: possibly undefined macro: AC_MSG_RESULT
configure:2907: error: possibly undefined macro: m4_foreach_w
autoreconf: /usr/bin/autoconf failed with exit status: 1


  奇怪的是,当我再次执行却报不同的错。。。
  configure.ac: installing `./install-sh'
  configure.ac: installing `./missing'
  configure.ac:34: installing `./config.guess'
  configure.ac:34: installing `./config.sub'
  Makefile.am:3: Libtool library used but `LIBTOOL' is undefined
  Makefile.am:3:
  Makefile.am:3: The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
  Makefile.am:3: to `configure.ac' and run `aclocal' and `autoconf' again.
  Makefile.am: C objects in subdir but `AM_PROG_CC_C_O' not in `configure.ac'
  Makefile.am: installing `./compile'
  Makefile.am: installing `./depcomp'
  autoreconf: automake failed with exit status: 1
  首先确保一些必要的依赖库是否已安装,如:libtool、autoconf、automake 等
  这个大家自行google下载并编译安装,常规操作,没啥说的,这里我直接yum了:
  yum install libtool autoconf automake
  看下libtoolize在哪:
  whereis libtoolize
  显示例如:libtoolize: /usr/bin/libtoolize,则可执行一下
  /usr/bin/libtoolize
  ---------------------------------------------------我是分割线----------------------------------------------------

  /usr/bin/libtoolize 时可能会报的错:
  libtoolize: putting auxiliary files in `.'.
  libtoolize: linking file `./ltmain.sh'
  libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
  libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
  libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
  报错很明确,按照提示操作即可:
  编辑:configure.ac
  添加一行:AC_CONFIG_MACRO_DIR([m4])
  重新执行:/usr/bin/libtoolize
  编辑:Makefile.am
  添加一行:ACLOCAL_AMFLAGS=-I m4
  ---------------------------------------------------我是分割线----------------------------------------------------

  ./configure 时可能会报的错:
  checking location of AMQP codegen directory... configure: error: could not find AMQP spec file at "'/codegen/amqp-0.9.1.json'"
  configure文件中目录与实际情况不符,虽然可以通过手动修改解决,但不建议,其实应该是rabbitmq-c和codegen的版本不匹配造成的,更换版本。
  

  checking finding a python with simplejson installed... configure: error: could not find a python that can 'import simplejson'
  很明显,该错误是由于python缺少simplejson包造成,可通过easy_install方式安装即可。
  ---------------------------------------------------我是分割线----------------------------------------------------
  还有更多报错情况,没有一一记录,总之解决方法就是:“报错信息”+“google”!
  BTW:相信搜一会儿你就会由衷得体会到:F*CK THE GFW!!!
  

  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354666-1-1.html 上篇帖子: PHP相关杂项知识 下篇帖子: php的c扩展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表