CentOS版本:
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
PHP版本:
# php -v
PHP 7.2.19 (cli) (built: Jun 4 2020 17:46:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
pecl 安裝失敗,判斷是沒有預先安裝amqp的依賴包rabbitmq-c:
# pecl install amqp
PECL中的amqp地址: http://pecl.php.net/package/amqp
amqp:
下載amqp源碼:
# wget http://pecl.php.net/get/amqp-1.10.2.tgz
解壓amqp:
# tar -zxf amqp-1.10.2.tgz
進入amqp源碼目錄:
# cd /root/amqp-1.10.2
找到phpize:
# whereis phpize
phpize: /usr/bin/phpize
# ll /usr/bin/phpize
lrwxrwxrwx. 1 root root 25 Jun 4 2020 /usr/bin/phpize -> /usr/local/php/bin/phpize
在amqp源碼目錄,執行phpize 命令是,準備 PHP 擴展庫的編譯環境:
# /usr/local/php/bin/phpize
安裝amqp擴展:
# ./configure --with-php-config=/usr/local/php/bin/php-config
checking for pkg-config... /usr/bin/pkg-config
checking for amqp using pkg-config... configure: error: librabbitmq not found
報錯沒有找到librabbitmq,需要安裝rabbitmq-c。
安裝rabbitmq-c:
下載rabbitmq-c源碼:
# wget https://github.com/alanxz/rabbitmq-c/archive/v0.10.0.tar.gz
解壓rabbitmq-c:
# tar -zxf v0.10.0.tar.gz
進入rabbitmq-c源碼目錄:
# cd rabbitmq-c-0.10.0/
編譯rabbitmq-c源碼,指定目錄:
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c-0.10.0
...
-- Configuring done
-- Generating done
-- Build files have been written to: /root/rabbitmq/rabbitmq-c-0.10.0
編譯安裝rabbitmq-c:
# make && make install
...
[100%] Built target test_tables
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/pkgconfig/librabbitmq.pc
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.so.4.4.0
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.so.4
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.so
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.a
-- Installing: /usr/local/rabbitmq-c-0.10.0/include/amqp.h
-- Installing: /usr/local/rabbitmq-c-0.10.0/include/amqp_framing.h
-- Installing: /usr/local/rabbitmq-c-0.10.0/include/amqp_tcp_socket.h
繼續編譯安裝amqp:
# cd /root/amqp-1.10.2
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.10.0
# make && make install
...
/usr/bin/ld: cannot find -lrabbitmq
collect2: error: ld returned 1 exit status
make: *** [amqp.la] Error 1
查看rabbitmq-c目錄:
# ll /usr/local/rabbitmq-c-0.10.0
total 0
drwxr-xr-x 2 root root 92 Aug 3 10:28 include
drwxr-xr-x 3 root root 118 Aug 3 10:28 lib64
複製一份lib64 爲lib:
[root@fuckqiu amqp-1.10.2]# cp -R /usr/local/rabbitmq-c-0.10.0/lib64/ /usr/local/rabbitmq-c-0.10.0/lib/
[root@fuckqiu amqp-1.10.2]# ll /usr/local/rabbitmq-c-0.10.0/
total 0
drwxr-xr-x 2 root root 92 Aug 3 10:28 include
drwxr-xr-x 3 root root 118 Aug 3 10:38 lib
drwxr-xr-x 3 root root 118 Aug 3 10:28 lib64
繼續編譯安裝amqp:
# cd /root/amqp-1.10.2
# make && make install
...
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
查看擴展文件:
```shell
# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
...
extension=amqp.so
...
添加amqp擴展文件到php.ini文件中:
extension=amqp.so
1. 直接在php.ini中添加:
- 找到php使用的配置文件:
# php --ini
Configuration File (php.ini) Path: /usr/local/php/etc
Loaded Configuration File: /usr/local/php/etc/php.ini
Scan for additional .ini files in: /usr/local/php/conf.d
- 添加 extension=amqp.so
# vim /usr/local/php/etc/php.ini
2. php.ini 的搜索路徑中,獨立添加:
- 找到php.ini 的搜索目錄:
# php -i | grep configure
--with-config-file-path=/usr/local/php/etc
- 在 /usr/local/php/etc 中新建一個文件,添加擴展:
# cat /usr/local/php/conf.d/amqp.ini
extension = "amqp.so"
- 重載php配置(平滑重啓):
# service php-fpm reload
Reload service php-fpm done
- 查看php擴展中是否已存在amqp:
# php -m | grep amqp
amqp
...
- 查看amqp擴展信息
# php --ri amqp
amqp
Version => 1.10.2
Revision => release
...