一、准备

当前php版本PHP Version 5.5.10,首先去http://pecl.php.net/package/cassandra,找到对应的php版本

二、下载安装

# wget http://101.110.118.47/pecl.php.net/get/cassandra-1.2.1.tgz
# tar -zxvf cassandra-1.2..tgz
# cd cassandra-1.2.1
# /usr/local/php/bin/phpize
# ./configure

遇到的一系列报错

报错①:checking for supported DataStax C/C++ driver version... gawk: cmd. line:1: fatal: cannot open file `/include/cassandra.h' for reading (No such file or directory)

checking for supported DataStax C/C++ driver version... gawk: cmd. line:: fatal: cannot open file `/include/cassandra.h' for reading (No such file or directory)

解决:需要安装cpp的drive

当前所在目录/usr/local/src下执行以下命令

# git clone https://github.com/datastax/cpp-driver.git
# mkdir cpp-driver/build
# cd cpp-driver/build
# cmake ..
# make

报错②:configure: error: Unable to load libuv

configure: error: Unable to load libuv

解决:

# wget https://github.com/libuv/libuv/archive/ v1.4.2.tar.gz
# tar -zxvf v1.4.2.tar.gz
# cd /usr/local/src/libuv-1.4.
# sh autogen.sh
# ./configure
# make
# make install

报错③:/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory

/usr/include/gnu/stubs.h::: error: gnu/stubs-.h:No such file or directory

解决:

# yum -y install glibc-devel.i686

报错④: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.

 WARNING: You will need re2c 0.13. or later if you want to regenerate PHP parsers.

解决:

https://blog.csdn.net/a454213722/article/details/51866100

报错⑤:/usr/local/src/cpp-driver/src/event_loop.cpp:63: error: ‘uv_print_all_handles’ was not declared in this scope

/usr/local/src/cpp-driver/src/event_loop.cpp:: error: ‘uv_print_all_handles’ was not declared in this scope

解决:百度、360、必应、谷歌都走了,出现类似错误的很多(was not declared in this scope),但是没有一个完全对应的解决方案,反正意思就是函数不存在。

简单粗暴,编辑/usr/local/src/cpp-driver/src/event_loop.cpp:63文件

# vim  /usr/local/src/cpp-driver/src/event_loop.cpp
//然后找到63行,把整行删掉 // uv_print_all_handles(loop(), stderr);

把一系列问题解决之后,在当前目录下/usr/local/src/cassandra-1.2.2

# make
# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-/  //ok,然后在php.ini里开启cassandra扩展就可以了

编辑php.ini文件

#vim /usr/local/php/etc/php.ini

//增加
extension=cassandra.so

然后重启php服务

意外!!!!意外!!!!TMD~~~

报错⑥:

NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/cassandra.so' - libcassandra.so.2: cannot open shared object file: No such file or directory in Unknown on line 0

 NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/cassandra.so' - libcassandra.so.: cannot open shared object file: No such file or directory in Unknown on line 

TMD明明目录下有cassandra.so文件,可TMD说没有。。。

解决:

百度到一个帖子说:这个问题是缺少/usr/local/lib64/libcassandra.so.2文件,经查找发现/usr/lib64/libcassandra.so.2存在,创建软件接至lib64中

ln -s /usr/local/lib64/libcassandra.so. /usr/lib64/libcassandra.so.

提示⑦:

在make install的时候还报过这玩意儿?????

/bin/sh /usr/local/src/cassandra-1.2.2/libtool --mode=install cp ./cassandra.la /usr/local/src/cassandra-1.2.2/modules
cp ./.libs/cassandra.so /usr/local/src/cassandra-1.2.2/modules/cassandra.so
cp ./.libs/cassandra.lai /usr/local/src/cassandra-1.2.2/modules/cassandra.la
PATH="$PATH:/sbin" ldconfig -n /usr/local/src/cassandra-1.2.2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/src/cassandra-1.2.2/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 `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

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/local/php/lib/php/extensions/no-debug-non-zts-20121212/

/bin/sh /usr/local/src/cassandra-1.2./libtool --mode=install cp ./cassandra.la /usr/local/src/cassandra-1.2./modules
cp ./.libs/cassandra.so /usr/local/src/cassandra-1.2./modules/cassandra.so
cp ./.libs/cassandra.lai /usr/local/src/cassandra-1.2./modules/cassandra.la
PATH="$PATH:/sbin" ldconfig -n /usr/local/src/cassandra-1.2./modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/src/cassandra-1.2./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 `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for
more information, such as the ld() and ld.so() manual pages.
----------------------------------------------------------------------
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-/

在SF看到的答案:

这是告诉你接下来要怎么用。简单的办法是在 /etc/ld.so.conf.d 下新建一个文件 local.conf,里边写上 /usr/local/lib。然后以 root 权限执行 ldconfig。这样你的系统才会找得到安装到 /usr/local/lib 下的库文件

# echo "/usr/local/lib" >> /etc/ld.so.conf
# /usr/local/lib/ldconfig

Centosphp安装cassandra扩展的更多相关文章

  1. pecl 轻松安装php扩展

    PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and Application Reposito ...

  2. 编译安装PHP7并安装Redis扩展Swoole扩展

    编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么 ...

  3. 使用phpize安装php扩展

    环境: CentOs 6.3 php 7 nginx 举例: 安装ssh2扩展 1.登陆http://pecl.php.net,搜索ssh2,如下图所示,注意版本的选择要根据php的版本来 2.下载s ...

  4. centos下安装php扩展php-memcached

    说来坎坷,为了安装这个php的扩展php-memcached,连操作系统都换了,从centos5.5升级到了centos6.8!! centos5.5中在安装php扩展php-memcached的依赖 ...

  5. 如何正确使用 Composer 安装 Laravel 扩展包

    我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 composer ...

  6. win10 64位安装memcache扩展和开启redis扩展

    前面有关于win10下搭建wamp环境的介绍,在此不在赘述,php操作memcache有memcache库和memcached库,其中memcache是php内置的扩展库,支持面向对象和面向过程两种操 ...

  7. Linux下,如何给PHP安装pdo_mysql扩展

    下载了一个免费开源的广告系统(openadserver),在Linux上安装时,提示要安装 pdo_mysql 扩展,先前有过编译安装 soap扩展 的经历,今天要编译安装 pdo_mysql 扩展, ...

  8. [Linux][PHP]安装swoole扩展

    1.下载swoole 2.解压并配置 /usr/local/php/bin/phpize ./configure --enable-swoole-debug --enable-sockets --en ...

  9. lnmp---------------lnmp1.3-full安装包安装lnmp环境,如何安装PHP扩展

    1. 如果已经安装LNMP套件,请按以下步骤处理 a. 跳转到fileinfo源代码目录` cd /root/downloads/lnmp1.2-full/src/php-7.0.7/ext/file ...

随机推荐

  1. mssql for xml path使用

    准备工作: CREATE TABLE [dbo].[Students]( [id] [int] IDENTITY(1,1) NOT NULL, [names] [varchar](50) NULL, ...

  2. JAVA课后作业01

    一.关于枚举的问题 public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t ...

  3. web开发中xml的内容

    文档声明(注:文档声明前不能有注释) XML中的元素/标签 注:xmlx中解析程序会将其中的空格与换行当做内容来解析,区分大小写 CDATA区域中的内容不解析

  4. 剑指offer——python【第54题】字符流中第一个不重复的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  5. Java编程基础篇第六章

    构造方法 一:概念: 给对象的数据(属性)进行初始化 二:特点: a.方法名与类同名(字母大小写也要一样) b.没有返回值类型 c.没有具体的返回值 return 三:构造方法重载: 方法名相同,与返 ...

  6. JQuery实现表格自动增加行,对新行添加事件

    实现功能: 通常在编辑表格时表格的行数是不确定的,如果一次增加太多行可能导致页面内容太多,反应变慢:通过此程序实现表格动态增加行,一直保持最下面有多个空白行. 效果: 一:原始页面 二:表1增加新行并 ...

  7. 20175320 2018-2019-2 《Java程序设计》第4周学习总结

    20175320 2018-2019-2 <Java程序设计>第4周学习总结 教材学习内容总结 本周学习了教材的第五章的内容.在这章中介绍了子类与继承,着重讲了子类继承的规则以及使用sup ...

  8. InnoDB中锁的算法(1)

    Ⅰ.InnoDB锁算法的介绍 首先明确一点,锁锁住的是什么?锁锁住的是索引 Record Lock 单个行记录上的锁 Gap Lock 锁定一个范围,但不包含记录本身 Next-key Lock Ga ...

  9. js 循环list

    $.ajax({ type : "POST", data:{ createStartTime:'', createEndTime:'' }, url : "<%=r ...

  10. Django配置相关及其它

    配置 模板 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.pat ...