美好的一天,每个人。
通常我只是在* nix OS中使用此Official Docs
但现在我使用的是MacO,而且这些说明并没有正常运作。
如果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
并使用this instruction制作了新的C / C ++驱动程序而没有错误。
所以在官方文件中它说:
注意install.sh脚本还将编译并静态链接到Apache Cassandra的DataStax C / C ++驱动程序的子模块版本的扩展。要使用系统上已有的cpp驱动程序版本,请运行phpize,。/ configure和make 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的驱动器/ EXT /模块
即使我在php.ini的路径中添加cassandra扩展名,我的项目仍然出现错误Class 'Cassandra\SimpleStatement' not found
。
php -d="extension=modules/cassandra.so" -m
在PHP模块列表中显示cassandra
我做错了什么?
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
______________最后更新:
Aaaa和它的工作!我在我的项目中编写了输出phpinfo();
并意识到使用其他php版本的apache和php.ini
,其中根本不是extension=cassandra.so
。
答案 0 :(得分:4)
您需要安装DataStax C / C ++驱动程序,它是PHP驱动程序的依赖项。在成功构建驱动程序之后使用these instructions后跟make install
将确保在构建PHP驱动程序时可以使用此依赖项。使用PHP驱动程序build instructions,您需要确保在运行pecl install cassandra
之前GMP和PHP开发库也可用。
编辑:
由于您使用的是El Capitan,因此遇到System Integrity Protection的问题,您需要disable才能将文件复制到/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。
答案 1 :(得分:-1)
如果需要在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运行了。
如果您想详细了解上述说明中发生的事情,请在此处参阅我的博客文章: