1

今天是个好日子。

通常我只是在 *nix OS 中使用这个Official Docs

但是现在我使用的是 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 脚本还将编译并静态链接到扩展中,这是用于 Apache Cassandra 的 DataStax C/C++ 驱动程序的子模块版本。要使用系统上已有的 cpp 驱动程序版本,请运行 phpize、./configure 并进行安装。

但是当我试图从中运行时./configurephp-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

库已安装在:
/Users/antvirgeo/php-driver/ext/modules

即使我将带有该路径的 cassandra 扩展添加到 php.ini 我Class 'Cassandra\SimpleStatement' not found的项目中仍然出现错误。

php -d="extension=modules/cassandra.so" -mcassandra在 PHP 模块列表中显示

我究竟做错了什么?

PS:我在 Parallels 中有 ubuntu 操作系统,这个项目安装了 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

4

2 回答 2

5

您将需要安装作为 PHP 驱动程序依赖项的 DataStax C/C++ 驱动程序。在成功构建驱动程序后使用这些说明将确保在构建 PHP 驱动程序时此依赖项可用make install使用 PHP 驱动程序构建说明,您需要确保 GMP 和 PHP 开发库在运行之前也可用pecl install cassandra

编辑:

由于您使用的是 El Capitan,因此您遇到了系统完整性保护问题,您需要禁用它才能将文件复制到/usr. 更好和推荐的选择是使用Homebrew安装 PHP ;但是,如果愿意,您也可以使用MacPorts

以下是用于在已安装 Xcode 和 Homebrew 的干净 OSX El Capitan 映像上重现 PHP 驱动程序安装的步骤:

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 代替。

于 2016-09-07T13:04:35.650 回答
0

如果您需要在 MacOS 上安装 Cassandra PHP 扩展,只需通过 PECL 安装即可,无需打开或关闭系统完整性保护。我写了一篇博客文章,其中包含简单的分步说明。它还包括一个从 Homebrew 安装 PHP 的链接,因为他们在今年 4 月删除了 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

现在您可以使用 PECL 安装 Cassandra PHP 扩展库了:

$ pecl install cassandra

检查以确保 Cassandra 扩展已添加到您的 PHP.ini 文件中。如果没有添加它。

[cassandra]
extension="cassandra.so"

重新启动 Apache,您就可以在 PHP 中使用 Cassandra 运行了。

如果您想了解上述说明中发生的事情的更多详细信息,请参阅我的博客文章:

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

于 2018-09-30T22:25:54.750 回答