Всем добрый день.
Обычно я просто использую это Официальные документы в * 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
совсем.
Вам нужно будет установить драйвер 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 также могут быть использованы вместо этого.
Если вам нужно установить расширение 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.
Если вы хотите получить более подробную информацию о том, что происходит в приведенных выше инструкциях, обратитесь к моему сообщению в блоге здесь: