2012-03-01 14 views
17

estoy tratando de instalar el RabbitMQ PECL extension pero después de ejecutarInstalación AMQP través PECL

sudo pecl install amqp 

me sale el siguiente mensaje de error críptico, que amplia googlear no ha ayudado a resolver.

tengo instalados los siguientes paquetes:

  • librabbitmq - C RabbitMQ propio cliente)
  • librabbitmq-dev - cabeceras dev etc.

y RabbitMQ funcionando con éxito en el servidor local

Tal vez podría ser un desajuste en la versión del cliente C y lo que espera la extensión PECL, ¿alguien más se encuentra con este?

salida Make a continuación ....

Saludos

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

que he experimentado esto también. En un sistema Ubuntu Lucid, saqué rabbitmq-server de repositorios de Ubuntu y librabbitmq-dev de Drizzle PPA. Luego, hacer los resultados 'pecl install amqp-beta' en el mensaje de error anterior. El mismo mensaje exacto también es el resultado de 'pecl install amqp'. – Mei

+0

O utilice la biblioteca PHP https://github.com/php-amqplib/php-amqplib solamente – kervin

Respuesta

3

Parece que la extensión PECL es más reciente que las bibliotecas de los que tienes instalados. Instale RabbitMQ directamente desde su sitio web, utilizando sus paquetes y no los que vienen con su distribución, ya que parecen estar desactualizados.

+0

Sí, Después de haber examinado la biblioteca de RabbitMQ C, dejan en claro que es experimental y se encuentra una versión que compilará la extensión PECL contra es azarosa En su lugar, solo voy con una implementación pura de PHP [php-amqplib] (https://github.com/videlalvaro/php-amqplib) Cheers – managedheap84

2

El dev lib del repos está roto (como suele ser ...). Usted tiene que clonar (de GIT o HG) y hacer que el lib, desde 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 

A continuación, ejecute "pecl instalar amqp", trabajado en mi ubuntu 12 con PHP 5.3

+0

Esto también funcionó para mí en 32bit 12.04 PHP 5.3. Sin embargo, en 13.04 64bit PHP 5.4, la extensión PECL se compila, pero al cargarla en apache aparece el siguiente error: "Advertencia de PHP: Inicio de PHP: no se puede cargar la biblioteca dinámica '/usr/lib/php5/20100525/amqp.so' -/usr/lib/php5/20100525/amqp.so: símbolo no definido: amqp_open_socket en Desconocido en la línea 0. " ¿Has logrado hacer que esto funcione? ¿Algunas ideas? – nicja

23

que tenía que instalarlo aplicando siguientes pasos encontró 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 

Después de eso, sudo pecl install amqp hicieron el trabajo.

Usando Ubuntu 12.10 con PHP 5.4.3.

+0

En las versiones de lanzamiento más recientes como Ubuntu 14.04 y PHP 5.6, debe verificar la última etiqueta en el repositorio rabbitmq-c.pph –

2

Esto es porque su rabbitmq es anterior a la versión que requiere la extensión php.

Puede instalar la versión más reciente de RabbitMQ o una versión inferior de la extensión como:

pecl install amqp-1.2.0 

Pero creo que el uso de las versiones más recientes es la mejor opción.

+1

¡buen consejo! Es Werd pero solo la versión 1.6.beta funcionó para mí ubuntu 14/PHP 5.6 –

3

esto es lo que hice para instalar con éxito en debian sibilante:

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

Esto funcionó para mí cuando todas las otras soluciones fallaron (muchos errores de compilación). ¡Gracias! –

3

Esto es lo que hice para instalar con éxito en debian sibilante: tuve que usar la versión 0.5.2 de 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

Instalación de AMQP de rabbitmq con pecl con PHP7.0

Simplemente siga estos pasos, esto instalará todas sus dependencias y la biblioteca amqp. Funciona para mí con bento/ubuntu-16.04 con 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 y sus dependencias de las diferentes versiones que se puede descargar desde

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