2014-01-03 3 views
0

Я пытаюсь написать расширение PHP для Apache Kafka в C, и оно должно использовать librdkafka. Итак, я скомпилировал и установил клиентскую библиотеку kafka и написал простое расширение, которое включает librdkafka/rdkafka.h, а расширение компилируется с помощью phpize, ./configure, make и make install. Но когда я пытаюсь использовать расширение, я получаю сообщение об ошибке:Расширение PHP на основе внешней библиотеки

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/2010052 5+lfs/kafka.so' - /usr/lib/php5/20100525+lfs/kafka.so: undefined symbol: rd_kafk a_topic_new in Unknown on line 0 

Так, в принципе, я думаю, что я не включил librdkafka должным образом в расширении или что-то связано с связывания этих двух программ.

Вот мой код: https://github.com/salebab/phpkafka

librdkafka файлы здесь:

/usr/local/lib/librdkafka.so /usr/local/lib/librdkafka.a 

Любая помощь?

ответ

1

ваш config.m4 имеет проблему, это мой, работал для меня:

PHP_ARG_WITH(kafka, for kafka support, 
Make sure that the comment is aligned: 
[ --with-kafka    Include kafka support]) 

PHP_ADD_INCLUDE("{path_to_rdkafka}/include") 

if test $PHP_KAFKA != "no"; then 
    PHP_ADD_LIBRARY_WITH_PATH(rdkafka, {path_to_rdkafka}/lib, KAFKA_SHARED_LIBADD) 
    PHP_SUBST(KAFKA_SHARED_LIBADD) 
    PHP_NEW_EXTENSION(kafka, kafka.c library.c, $ext_shared) 
fi