2012-03-01 20 views
17

Tôi đang cố gắng để cài đặt các RabbitMQ PECL extension nhưng sau khi chạyCài đặt AMQP qua PECL

sudo pecl install amqp 

tôi nhận được thông báo lỗi khó hiểu sau đây, mà googling rộng đã không giúp quyết tâm.

tôi có những gói cài đặt:

  • librabbitmq - RabbitMQ C khách hàng riêng của mình)
  • librabbitmq-dev - headers dev, vv

và RabbitMQ chạy thành công trên localhost

Có lẽ nó có thể là một sự không phù hợp trong phiên bản của máy khách C và những gì phần mở rộng PECL mong đợi, bất cứ ai khác đi qua cái này?

Make đầu ra dưới đây ....

Cheers

running: make 
/bin/bash /tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/libtool --mode=compile cc -I.   -I/tmp/pear/temp/amqp -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-  1.0.0/include -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/main -I/tmp/pear/temp/amqp -  I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -  I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/amqp/amqp.c -o amqp.lo 
libtool: compile: cc -I. -I/tmp/pear/temp/amqp -DPHP_ATOM_INC -I/tmp/pear/temp/pear- build-rootZNUmac/amqp-1.0.0/include -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/main - I/tmp/pear/temp/amqp -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM - I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/amqp/amqp.c -fPIC -DPIC -o .libs/amqp.o 
/bin/bash /tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/libtool --mode=compile cc -I. -I/tmp/pear/temp/amqp -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootZNUmac/amqp- 1.0.0/include -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/main -I/tmp/pear/temp/amqp - I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM - I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c  /tmp/pear/temp/amqp/amqp_exchange.c -o amqp_exchange.lo 
libtool: compile: cc -I. -I/tmp/pear/temp/amqp -DPHP_ATOM_INC -I/tmp/pear/temp/pear- build-rootZNUmac/amqp-1.0.0/include -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/main - I/tmp/pear/temp/amqp -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM - I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/amqp/amqp_exchange.c -fPIC -DPIC -o .libs/amqp_exchange.o 
/bin/bash /tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/libtool --mode=compile cc -I. -I/tmp/pear/temp/amqp -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootZNUmac/amqp- 1.0.0/include -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/main -I/tmp/pear/temp/amqp - I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM - I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/amqp/amqp_queue.c -o amqp_queue.lo 
libtool: compile: cc -I. -I/tmp/pear/temp/amqp -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/include -I/tmp/pear/temp/pear-build-rootZNUmac/amqp-1.0.0/main - I/tmp/pear/temp/amqp -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM - I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c   /tmp/pear/temp/amqp/amqp_queue.c -fPIC -DPIC -o .libs/amqp_queue.o 
/tmp/pear/temp/amqp/amqp_queue.c: In function 'read_message_from_channel': 
/tmp/pear/temp/amqp/amqp_queue.c:316:11: error: 'AMQP_FIELD_KIND_U64' undeclared (first use in this function) 
/tmp/pear/temp/amqp/amqp_queue.c:316:11: note: each undeclared identifier is reported only once for each function it appears in 
/tmp/pear/temp/amqp/amqp_queue.c: In function 'zim_amqp_queue_class_nack': 
/tmp/pear/temp/amqp/amqp_queue.c:1020:2: error: unknown type name 'amqp_basic_nack_t' 
/tmp/pear/temp/amqp/amqp_queue.c:1039:3: error: request for member 'delivery_tag' in something not a structure or union 
/tmp/pear/temp/amqp/amqp_queue.c:1040:3: error: request for member 'multiple' in something not a structure or union 
/tmp/pear/temp/amqp/amqp_queue.c:1041:3: error: request for member 'requeue' in something not a structure or union 
/tmp/pear/temp/amqp/amqp_queue.c:1046:3: error: 'AMQP_BASIC_NACK_METHOD' undeclared  (first use in this function) 
make: *** [amqp_queue.lo] Error 1 
ERROR: `make' failed 
+0

Tôi đã có kinh nghiệm này cũng có. Trên hệ thống Ubuntu Lucid, tôi đã kéo máy chủ thỏmq từ kho lưu trữ Ubuntu và librabbitmq-dev từ PFR Mưa phùn. Sau đó thực hiện 'pecl install amqp-beta' trong thông báo lỗi trên. Cùng một thông điệp chính xác cũng kết quả từ 'pecl install amqp'. – Mei

+0

Hoặc sử dụng thư viện https://github.com/php-amqplib/php-amqplib chỉ có https://github.com/php-amqplib/php-amqplib – kervin

Trả lời

3

Dường như phần mở rộng PECL mới hơn các thư viện mà bạn đã đã được cài đặt. Cài đặt RabbitMQ trực tiếp từ trang web của họ, sử dụng các gói của họ chứ không phải các gói đi kèm với bản phân phối của bạn vì chúng dường như đã lỗi thời.

+0

Yep, Sau khi xem thư viện RabbitMQ C, chúng làm rõ nó là thử nghiệm và tìm phiên bản mà phần mở rộng PECL sẽ biên dịch chống lại là hit và bỏ lỡ Thay vào đó, tôi chỉ cần thực hiện PHP thuần túy [php-amqplib] (https://github.com/videlalvaro/php-amqplib) Chúc mừng – managedheap84

2

Các lib lib từ repo bị hỏng (như thường ....). Bạn phải clone (từ GIT hoặc HG) và làm cho lib, từ php.net:

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 

Sau đó chạy "pecl install AMQP", làm việc trong ubuntu tôi 12 với Php 5.3

+0

Điều này cũng làm việc cho tôi trên 32bit 12.04 PHP 5.3. Tuy nhiên trên 13.04 64bit PHP 5.4 phần mở rộng PECL biên dịch nhưng tải nó trong apache cho lỗi sau: "PHP Cảnh báo: PHP Startup: Không thể tải thư viện động '/usr/lib/php5/20100525/amqp.so' -/usr/lib/php5/20100525/amqp.so: biểu tượng không xác định: amqp_open_socket trong Không xác định trên dòng 0. " Bạn đã quản lý để có được điều này để làm việc? Ý tưởng nào? – nicja

23

tôi phải cài đặt nó áp dụng các bước sau đây được tìm thấy here:

# Download the rabbitmq-c library @ version 0-9-1 
git clone git://github.com/alanxz/rabbitmq-c.git 
cd rabbitmq-c 
# Enable and update the codegen git submodule 
git submodule init 
git submodule update 
# Configure, compile and install 
autoreconf -i && ./configure && make && sudo make install 

Sau đó, sudo pecl install amqp đã thực hiện công việc.

Sử dụng Ubuntu 12.10 với PHP 5.4.3.

+0

Trên các phiên bản phát hành mới hơn như Ubuntu 14.04 và PHP 5.6, bạn cần phải kiểm tra thẻ mới nhất trên kho lưu trữ rabbitmq-c repository.pph –

2

Điều này là do thỏ của bạn lớn hơn phiên bản mà tiện ích mở rộng php yêu cầu.

Bạn có thể cài đặt phiên bản mới hơn của RabbitMQ hoặc phiên bản thấp hơn của phần mở rộng như:

pecl install amqp-1.2.0 

Nhưng tôi nghĩ rằng sử dụng phiên bản mới nhất là lựa chọn tốt hơn.

+1

! Đó là Werd nhưng chỉ 1.6.beta phiên bản làm việc cho tôi ubuntu 14/PHP 5.6 –

3

đây là những gì tôi đã làm để cài đặt nó thành công trên debian khò khè:

apt-get install pkg-config librabbitmq-dev librabbitmq0 

git clone https://github.com/alanxz/rabbitmq-c 
cd rabbitmq-c/ 
autoreconf -i 
./configure 
make 
make install 
pecl install amqp 
+0

Điều này làm việc cho tôi khi tất cả các giải pháp khác không thành công (biên dịch lỗi galore). Cảm ơn bạn! –

3

Đây là những gì tôi đã làm để cài đặt nó thành công trên debian khò khè: Tôi đã phải sử dụng phiên bản 0.5.2 của RabbitMQ-c

git clone https://github.com/alanxz/rabbitmq-c 
cd rabbitmq-c 
git checkout tags/v0.5.2 
git submodule init 
git submodule update 
autoreconf -i && ./configure && make && make install 
pecl install amqp 
1

Cài đặt AMQP của thỏmq với pecl với PHP7.0

Chỉ cần làm theo một vài bước sau, điều này sẽ cài đặt tất cả các phụ thuộc và thư viện amqp của nó. Nó làm việc cho tôi với bento/ubuntu-16.04 với php7.0

apt-get update 

wget http://in.archive.ubuntu.com/ubuntu/ubuntu/pool/universe/libr/librabbitmq/librabbitmq1_0.5.2-2_amd64.deb 
dpkg -i librabbitmq1_0.5.2-2_amd64.deb 

wget http://in.archive.ubuntu.com/ubuntu/ubuntu/pool/universe/libr/librabbitmq/librabbitmq-dev_0.5.2-2_amd64.deb 
dpkg -i librabbitmq-dev_0.5.2-2_amd64.deb 

apt-get install php7.0 php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-xml php7.0-dev 

pecl install amqp 

echo "extension=amqp.so" >> /etc/php/7.0/cli/php.ini 
echo "extension=amqp.so" >> /etc/php/7.0/fpm/php.ini 

Librabbitmq-dev và phụ thuộc của các phiên bản khác nhau nó có thể được tải về từ

http://in.archive.ubuntu.com/ubuntu/ubuntu/pool/universe/libr/librabbitmq/