Установка AMQP через PECL

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

sudo pecl install amqp 

Я получаю следующее загадочное сообщение об ошибке, которое не разрешило обширный поиск в Google.

У меня установлены эти пакеты:

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

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

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

Сделайте вывод ниже ….

ура

 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 

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

Я должен был установить его, выполнив следующие шаги, описанные здесь :

  # 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.

это то, что я сделал, чтобы успешно установить его на debian wheezy:

 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 

Это то, что я сделал, чтобы успешно установить его на debian wheezy: мне пришлось использовать версию 0.5.2 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 

Dev lib из репо сломан (как обычно ….). Вы должны клонировать (из GIT или HG) и создавать lib, с 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 install amqp», сработал в моем ubuntu 12 с Php 5.3

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

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

 pecl install amqp-1.2.0 

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

Установка 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/