提前说明:windows环境下安装RabbitMQ PHP扩展最简单了,直接去下载就可以. https://pecl.php.net/package/amqp 里面直接包含二个php_amqp.dll,rabbitmq.4.dll(其中4是当前最新版本的数字);
下面开始Centos环境下的安装过程,安装此扩展花费了我1天的时间,希望在此也能帮助到其他朋友.
测试机:Centos 6.5(64bit)
一、安装rabbitmq-c
1
| # git clone https://github.com/alanxz/rabbitmq-c.git |
# git clone https://github.com/alanxz/rabbitmq-c.git
1
2
| # mkdir build && cd build
# 这一步是在rabbitmq-c的根目录下创建一个build子目录 |
# mkdir build && cd build
# 这一步是在rabbitmq-c的根目录下创建一个build子目录
1
2
| # 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目录中
1
2
| # cmake --build . --target install
# 这一步是真正的build rabbitmq-c库的,注意,不要漏掉点 '.' |
# cmake --build . --target install
# 这一步是真正的build rabbitmq-c库的,注意,不要漏掉点 '.'
此时,rabbitmq-c已安装完毕,我们查询一下安装目录/usr/local/rabbitmq-c
二、安装amqp PHP扩展
1
| # wget https://pecl.php.net/get/amqp-1.9.3.tgz |
# wget https://pecl.php.net/get/amqp-1.9.3.tgz
1
| # tar -xvf amqp-1.9.3.tgz |
# tar -xvf amqp-1.9.3.tgz
1
| # ./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
此时,扩展生成完毕啦,大功告成。
三、配置amqp扩展
查找php.ini位置
1
| # find / -name 'php.ini' |
# find / -name 'php.ini'
1
2
| # 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即可.
1
2
3
| 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是出现在不同的机器上,解决方法都是一样的);
1
| 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