Проблема с драйвером Datastax Cassandra для PHP в CentOS 6.7: неопределенный символ: cass_cluster_set_whitelist_dc_filtering в Unknown в строке 0

Я установил расширение драйвера datastax cassandra для PHP, используя следующий процесс:

  • Установленные зависимости: automake cmake gcc gcc-c++ git libtool openssl-devel wget gmp gmp-devel boost php-devel pcre-devel git libuv gmp
  • Установлен cpp-драйвер путем сборки из исходников
  • Установленный драйвер PHP Datastax cassandra из исходников
  • Добавлено расширение в файл /etc/php.ini

Когда я пытаюсь выполнить файл php для подключения к кластеру cassandra, я получаю следующую ошибку:

 PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/cassandra.so' 
- /usr/lib64/php/modules/cassandra.so: undefined symbol: cass_cluster_set_whitelist_dc_filtering in Unknown on line 0

Я попытался установить снова, используя вместо этого двоичные файлы, и я все еще сталкиваюсь с той же проблемой.

Вот вывод ldd:

ldd /usr/lib64/php/modules/cassandra.so
    linux-vdso.so.1 =>  (0x00007ffe9ad9a000)
    libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f2377ca2000)
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f2377a35000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f237781f000)
    libuv.so.1 => /usr/lib64/libuv.so.1 (0x00007f23775fe000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f23773f5000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f23771d8000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f2376fbf000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f2376dba000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f2376b36000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f2376830000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f2376619000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f2376285000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f2376041000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f2375d59000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f2375b55000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f2375929000)
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f2375544000)
    /lib64/ld-linux-x86-64.so.2 (0x00000030d4a00000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f2375339000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f2375135000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2374f1b000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2374cfb000)

Спасибо за вашу помощь.


person Piyush    schedule 19.05.2016    source источник


Ответы (1)


Похоже, вы используете неправильную версию cpp-драйвера для расширения php-драйвера. В настоящее время в мастере php-driver подмодуль cpp-драйвера указывает на версию 2.2.2, тогда как политики балансировки нагрузки черного списка, белого списка DC и черного списка DC были добавлены в v2.3.0.

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

person Fero    schedule 19.05.2016
comment
Привет, Fero, я удалил старый и установил новый драйвер CPP rpm -qa | grep cassandra-cpp-driver* cassandra-cpp-driver-devel-2.3.0-1.el6.x86_64 cassandra-cpp-driver-2.3.0-1.el6.x86_64 и пересобрал драйвер php из исходного кода, но все равно не повезло. Что мне не хватает? - person Piyush; 20.05.2016
comment
@Piyush: я выполнил новую установку CentOS 6.7 [x64] с помощью драйвера DataStax C/C++ v2.3.0 и libuv v1.8.0 Зависимости RPM с последующим выполнением процесса сборки для драйвера DataStax PHP v1.1.0. Я создал скрипт Vagrant gist, который вы можете использовать, чтобы помочь вам с проблемами сборки. . - person Fero; 27.05.2016