PHP-драйвер Cassandra для MacOS — класс ‘Cassandra \ SimpleStatement’ не найден

Всем добрый день.

Обычно я просто использую это Официальные документы в * nix ОС

Но сейчас я использую MacOs, и эта инструкция просто не работает должным образом.

В случае pecl install cassandra Я получил это сообщение:

checking for supported DataStax C/C++ driver version... awk: can't open file /include/cassandra.h
source line number 1
configure: error: not supported. Driver version 2.4.2+ required (found )
ERROR: `/private/tmp/pear/install/cassandra/configure --with-php-config=/usr/bin/php-config' failed

Моя логика говорит мне, что в этом случае мне нужно сделать драйвер DataStax C / C ++ самостоятельно. В папке php-driver\lib Я удаляю cpp-driver и используя эта инструкция сделать новый и свежий C / C ++ драйвер без ошибок.

Так в официальном документе сказано:

Примечание. Сценарий install.sh также компилирует и статически связывает в расширение подпланированную версию драйвера DataStax C / C ++ для Apache Cassandra. Чтобы использовать версию драйвера cpp, которая уже установлена ​​в вашей системе, запустите phpize, ./configure и выполните install.

Но когда я пытаюсь бежать ./configure от php-drive/ext Я получил почти ту же ошибку:

checking for supported DataStax C/C++ driver version... awk: can't open file /include/cassandra.h
source line number 1
configure: error: not supported. Driver version 2.4.2+ required (found )

Даже если я продолжу и после этой ошибки запустите make install это дает мне этот журнал:

/bin/sh /Users/antvirgeo/php-driver/ext/libtool --mode=install cp ./cassandra.la /Users/antvirgeo/php-driver/ext/modules
cp ./.libs/cassandra.so /Users/antvirgeo/php-driver/ext/modules/cassandra.so
cp ./.libs/cassandra.lai /Users/antvirgeo/php-driver/ext/modules/cassandra.la
----------------------------------------------------------------------
Libraries have been installed in:
/Users/antvirgeo/php-driver/ext/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20121212/
cp: /usr/lib/php/extensions/no-debug-non-zts-20121212/#INST@24727#: Operation not permitted
make: *** [install-modules] Error 1

Библиотеки были установлены в:
/ Пользователи / antvirgeo / PHP-драйвера / внутр / модули

Даже если я добавлю расширение cassandra с таким путем в php.ini, у меня все равно будет ошибка Class 'Cassandra\SimpleStatement' not found в моем проекте.

php -d="extension=modules/cassandra.so" -m показывая что cassandra в списке модулей PHP

Что я делаю неправильно?

PS: У меня есть Ubuntu OS в Parallels с этим проектом с драйвером DataStax php, установленным с этой инструкцией, работает нормально.

____upd:
После всех инструкций @Fero без ЛЮБЫЕ ОШИБКИ, команда /usr/local/bin/php -i | grep -A 10 "^cassandra$" показывая мне это:

cassandra

Cassandra support => enabled
C/C++ driver version => 2.4.2
Persistent Clusters => 0
Persistent Sessions => 0

Directive => Local Value => Master Value
cassandra.log => cassandra.log => cassandra.log
cassandra.log_level => ERROR => ERROR

И все та же ошибка — Class 'Cassandra\SimpleStatement' not found

______________ ОБНОВЛЕНА ПОСЛЕДНЯЯ:

Даааа и работает! Я написал вывод phpinfo(); в моем проекте и понять, что Apache, используя другую версию PHP и php.iniгде не было extension=cassandra.so совсем.

1

Решение

Вам нужно будет установить драйвер DataStax C / C ++, который зависит от драйвера PHP. С помощью эти инструкции с последующим make install после того, как драйвер был успешно собран, эта зависимость будет доступна при сборке драйвера PHP. Использование драйвера PHP инструкции по сборке Вам нужно убедиться, что библиотеки GMP и PHP dev также доступны перед запуском pecl install cassandra,

РЕДАКТИРОВАТЬ:

Поскольку вы используете El Capitan, у вас возникают проблемы с Защита целостности системы и вам нужно будет запрещать это для того, чтобы скопировать файлы в /usr, Лучший и рекомендуемый вариант — установить PHP, используя Homebrew; Однако вы также можете использовать MacPorts если предпочтительнее.

Ниже приведены шаги, используемые для воспроизведения установки драйвера PHP на чистый образ OSX El Capitan с уже установленными Xcode и Homebrew:

brew install autoconf cmake libuv gmp openssl pcre homebrew/php/php55
brew link homebrew/php/php55
mkdir code
pushd code
git clone https://github.com/datastax/php-driver.git
pushd php-driver
git submodule update --init --recursive
pushd lib/cpp-driver
mkdir build
pushd build
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl ..
make -j$(sysctl -n hw.ncpu)
sudo make install
popd
popd
mkdir build
pushd ext
/usr/local/bin/phpize
popd
pushd build
../ext/configure --with-php-config=/usr/local/bin/php-config
make -j$(sysctl -n hw.ncpu)
sudo make install
popd
popd
sudo sh -c 'echo "extension=cassandra.so" >> /usr/local/etc/php/5.5/php.ini'

Затем вы можете проверить установку с помощью следующей команды:

/usr/local/bin/php -i | grep -A 10 "^cassandra$"

ПРИМЕЧАНИЕ: PHP v5.5 используется выше, так как это версия по умолчанию, которая поставляется с El Capitan; PHP v5.6 и v7.0 также могут быть использованы вместо этого.

4

Другие решения

Если вам нужно установить расширение Cassandra PHP на MacOS, вы можете сделать это, просто установив его через PECL, без необходимости включать или выключать защиту целостности системы. Я написал сообщение в блоге с простыми пошаговыми инструкциями. Он также содержит ссылку на установку PHP из Homebrew, так как они удалили кран Homebrew / php еще в апреле этого года.

Кроме того, он передает неправильные инструкции, приведенные на веб-сайте DataStax. Короче …

Установите зависимости (я запускаю эти команды по одной, чтобы легко просматривать любые сообщения):

$ brew install autoconf
$ brew install cmake
$ brew install automake
$ brew install libtool
$ brew install gmp
$ brew install libuv
$ brew install openssl

Извлеките и соберите драйвер C ++, а затем создайте каталог сборки внутри папки cpp-driver:

$ git clone https://github.com/datastax/cpp-driver.git --depth=1
$ mkdir cpp-driver/build
$ cd cpp-driver/build

Сделайте и соберите драйвер с квалифицированным вызовом OpenSSL:

$ cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib ..
$ make
$ make install

Теперь вы можете приступить к установке библиотек расширений Cassandra PHP с использованием PECL:

$ pecl install cassandra

Убедитесь, что расширение Cassandra было добавлено в ваш файл PHP.ini. Если не добавить это.

[cassandra]
extension="cassandra.so"

Перезапустите Apache, и вы запустите Cassandra на PHP.

Если вы хотите получить более подробную информацию о том, что происходит в приведенных выше инструкциях, обратитесь к моему сообщению в блоге здесь:

https://medium.com/@crmcmullen/how-to-install-the-cassandra-php-driver-on-macos-10-13-high-sierra-and-10-14-mojave-c18263831ccb

-1