php rabbitmq拓展失败,记录Centos下RabbitMQ安装PHP扩展的详细过程以及遇到的各种坑...

提前说明:windows环境下安装RabbitMQ PHP扩展最简单了,直接去下载就可以. https://pecl.php.net/package/amqp 里面直接包含二个php_amqp.dll,rabbitmq.4.dll(其中4是当前最新版本的数字);

下面开始Centos环境下的安装过程,安装此扩展花费了我1天的时间,希望在此也能帮助到其他朋友.

测试机:Centos 6.5(64bit)

一、安装rabbitmq-c

# git clone https://github.com/alanxz/rabbitmq-c.git

# git clone https://github.com/alanxz/rabbitmq-c.git

# cd rabbitmq-c/

# cd rabbitmq-c/

# mkdir build && cd build

# 这一步是在rabbitmq-c的根目录下创建一个build子目录

# mkdir build && cd build

# 这一步是在rabbitmq-c的根目录下创建一个build子目录

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..

# 这一步是让cmake根据../CMakeList.txt,即rabbitmq-c的根目录下的CMakeList.txt创建Makefile文件,Makefile文件会被创建到build目录中

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..

# 这一步是让cmake根据../CMakeList.txt,即rabbitmq-c的根目录下的CMakeList.txt创建Makefile文件,Makefile文件会被创建到build目录中

# cmake --build . --target install

# 这一步是真正的build rabbitmq-c库的,注意,不要漏掉点 '.'

# cmake --build . --target install

# 这一步是真正的build rabbitmq-c库的,注意,不要漏掉点 '.'

此时,rabbitmq-c已安装完毕,我们查询一下安装目录/usr/local/rabbitmq-c

# whereis rabbitmq-c

# whereis rabbitmq-c

二、安装amqp PHP扩展

# wget https://pecl.php.net/get/amqp-1.9.3.tgz

# wget https://pecl.php.net/get/amqp-1.9.3.tgz

# tar -xvf amqp-1.9.3.tgz

# tar -xvf amqp-1.9.3.tgz

# cd amqp-1.9.3

# cd amqp-1.9.3

# phpize

# phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c

# make && make install

# make && make install

此时,扩展生成完毕啦,大功告成。

三、配置amqp扩展

查找php.ini位置

# find / -name 'php.ini'

# find / -name 'php.ini'

# vi /usr/local/php/etc/php.ini

#添加 extension=amqp.so

# vi /usr/local/php/etc/php.ini

#添加 extension=amqp.so

重走服务即可完成扩展安装,但实际上会遇到另一个问题;请参考下面的坑.

=================================坑在此=====================================

1.rabbitmq-c的安装过程中,一定要记的手工指定安装目录/usr/local/rabbitmq-c

2.rabbitmq-c的安装过程中,命令行中的点”.”千万别漏

3.安装amqp PHP扩展过程中,有些机器会出现以下情况,原因就是rabbitmq-c生成时lib的目录为/usr/local/rabbitmq-c/lib64,此时最好的做法时,直接把/usr/local/rabbitmq-c/lib64改为/usr/local/rabbitmq-c/lib即可.

lrabbitmq -Wl,-rpath -Wl,/usr/local/rabbitmq-c/lib -Wl,-soname -Wl,amqp.so -o .libs/amqp.so

/usr/bin/ld: cannot find -lrabbitmq

collect2: ld returned 1 exit status

lrabbitmq -Wl,-rpath -Wl,/usr/local/rabbitmq-c/lib -Wl,-soname -Wl,amqp.so -o .libs/amqp.so

/usr/bin/ld: cannot find -lrabbitmq

collect2: ld returned 1 exit status

4.在配置amqp扩展时,重起php-fpm服务后,出现了如下错误,提示找不到librabbitmq.so.4,实际上librabbitmq.so.4就在/usr/local/rabbitmq-c/lib64目录下,于是还是参考方法3即可(因为我是在2台机器上分别安装的,所以坑3坑4是出现在不同的机器上,解决方法都是一样的);

Starting php-fpm [26-Oct-2017 10:54:53] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/amqp.so' - librabbitmq.so.4: cannot open shared object file: No such file or directory in Unknown on line 0

Starting php-fpm [26-Oct-2017 10:54:53] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/amqp.so' - librabbitmq.so.4: cannot open shared object file: No such file or directory in Unknown on line 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值