2012-03-01 4 views
17

Я пытаюсь установить RabbitMQ PECL extension, но после запускаУстановка AMQP через PECL

sudo pecl install amqp 

Я получаю следующее загадочное сообщение об ошибке, которое обширна прибегая к помощи не помогло решение.

Я установлены эти пакеты:

  • librabbitmq - сам RabbitMQ C клиент)
  • librabbitmq-DEV - Dev заголовки и т.д.

и RabbitMQ успешно работает на локальном хосте

Возможно, это может быть несоответствие в версии клиента C и то, что ожидает расширение PECL, кто-нибудь другой сталкивается с этим?

выход Make ниже ....

Приветствия

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

Я испытал это тоже. В системе Ubuntu Lucid я вытащил сервер rabbitmq из репозиториев Ubuntu и librabbitmq-dev из PPZ. Затем выполнение 'pecl install amqp-beta' приводит к указанному выше сообщению об ошибке. Точное точное сообщение также получается из 'pecl install amqp'. – Mei

+0

Или используйте только PHP https://github.com/php-amqplib/php-amqplib library – kervin

ответ

3

Похоже, что расширение PECL новее, чем библиотеки, которые вы получили установили. Установите RabbitMQ прямо со своего веб-сайта, используя свои пакеты, а не те, которые поставляются с вашим дистрибутивом, поскольку они, кажется, устарели.

+0

Yep, Посмотрев на библиотеку RabbitMQ C, они дают понять, что это экспериментально, и найти версию, которую будет скомпилировать расширение PECL против ударил и пропустить Вместо этого я просто хочу с чистой реализации PHP [PHP-amqplib] (https://github.com/videlalvaro/php-amqplib) Приветствия – managedheap84

2

Неисправность dev lib от репо (как обычно ....). Вы должны клонировать (из GIT или HG) и сделать ОМТ из 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 

Затем запустить "PECL установить AMQP", работал в моем убунту 12 с Php 5.3

+0

Это также работает для меня на 32-битных 12.04 PHP 5.3. Однако на 13.04 64-битном PHP 5.4 расширение PECL компилируется, но загрузка его в apache дает следующую ошибку: «PHP Warning: PHP Startup: не удается загрузить динамическую библиотеку» /usr/lib/php5/20100525/amqp.so '-/usr/lib/php5/20100525/amqp.so: undefined symbol: amqp_open_socket в Unknown в строке 0. " Вам удалось заставить это работать? Есть идеи? – nicja

23

Я должен был установить его наклеивание следующих шагов найдено 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 

после этого sudo pecl install amqp сделал работу.

Использование Ubuntu 12.10 с PHP 5.4.3.

+0

В более новых версиях выпуска, таких как Ubuntu 14.04 и PHP 5.6, вам нужно проверить последний тег на сайте rabbitmq-c repository.pph –

2

Это потому, что ваш rabbitmq старше версии, необходимой для расширения php.

Вы можете установить новую версию RabbitMQ или более низкую версию расширения, как:

pecl install amqp-1.2.0 

Но я думаю, используя последние версии лучший выбор.

+1

хороший отзыв! Это Werd, но для меня работала только версия 1.6.beta. Ubuntu 14/PHP 5.6 –

3

это то, что я сделал, чтобы установить его успешно на Debian хриплым:

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

Это работало для меня, когда все другие решения не удались (ошибки компиляции в изобилии). Спасибо! –

3

Это то, что я сделал, чтобы установить его успешно на Debian хриплым: Я должен был использовать версию 0.5.2 из RabbitMQ-с

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

Установка AMQP кролика в виде клюшки с PHP7.0

Просто выполните следующие шаги, это установит все его зависимости и библиотеку amqp. Это работает для меня bento/ubuntu-16.04 с 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 и его зависимости от различных версий его можно загрузить с

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

Смежные вопросы