Centos安装rabbitmq的php扩展(亲测通过)
主要是两个包
1.rabbitmq-c的包
2.amqp的包
下载
首先是rabbitmq-c-0.4.1.tar.gz包,可以访问https://github.com/alanxz/rabbitmq-c去下载最新的
wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.4.1/rabbitmq-c-0.4.1.tar.gz
然后下载amqp-1.2.0.tgz,也可以去下载最新的http://pecl.php.net/package/amqp
wget http://pecl.php.net/get/amqp-1.2.0.tgz
安装
现在开始进行关键的操作了,在网上找的方法很多都有问题,这是我的安装和配置方法,你可以借鉴一下,但是不能保证每台机器都能够正确的安装哦~
先把两个包全都解压
tar zxvf rabbitmq-c-0.4.1.tar.gz
tar zxvf amqp-1.2.0.tgz
两个是有先后顺序的哦~
安装rabbitmq-c-0.4.1
cd rabbitmq-c-0.4.1
./configure --prefix=/usr/local/rabbitmq-c-0.4.1
最后显示一下内容表示正常
rabbitmq-c build options:
Host: x86_64-unknown-linux-gnu
Version: 0.4.1
SSL/TLS: openssl
Tools: yes
Documentation: no
Examples: yes
然后进行make和安装了.
make && make install
如果没有报错,那就是安装成功了,要是有错误,请在本文章下边回复,我们一起研究,嘿嘿~~
安装amqp-1.2.0
cd amqp-1.2.0
phpize
执行完phpize命令后你应该看到类似下边的内容
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
要是没有这个命令的话需要安装一下
yum install php-devel
要是自己安装的php的话 可能需要自己查找一下啦~~~
find / -name phpize
以上这两步是没有phpize这个命令的才需要执行哦~~~
然后是configure,这个要根据你个人环境自己修改内容,这里展示的是我的
./configure --with-php-config=/usr/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.4.1/
PS:这里解释一下
--with-php-config=/usr/bin/php-config 这个php-config根据你装的php而定,要是找不到请用find / -name php-config查找
--with-librabbitmq-dir=/usr/local/rabbitmq-c-0.4.1/ 这个是指定你安装的rabbitmq-c的目录,我安装的是/usr/local/rabbitmq-c-0.4.1/因为在安装rabbitmq-c的时候我自己指定了安装目录了.
然后进行make和安装了
make && make install
这个应该不会出现什么问题.
在make install完成后他会提示
Installing shared extensions: /usr/lib64/php/modules/
以上是正常情况下,要是你自己编译的php,那么他会提示你别的路径,此时你需要找到这个路径里边的amqp.so文件,将他拷贝到/usr/lib64/php/modules/下.
最后安装完amqp后还不算完,咱们还要让php加载这个扩展,这个挺简单的,编辑php.ini文件添加一下内容
vim /etc/php.ini
[rabbitmq]
extension=amqp.so
extension_dir = "/usr/lib64/php/modules/"
这个随便找一个位置就可以了,之后咱们重启apache或者是php-fpm了
service httpd restart
service php-fpm restart
根据实际情况选择以上的命令.
php测试脚本
php测试rabbitmq的php扩展插件脚本
<?php
$cnn = new AMQPConnection();
$cnn->setHost('127.0.0.1');
$cnn->setLogin('guest');
$cnn->setPassword('guest');
if($cnn->connect()){
echo '连接成功';
}
?>