zoukankan      html  css  js  c++  java
  • Centos给php安装cassandra扩展

    一、准备

    当前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.1.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:1: 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.2
    # 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:7:27: error: gnu/stubs-32.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.4 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:63: 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-20121212/  //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.2: cannot open shared object file: No such file or directory in Unknown on line 0

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

    解决:

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

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

     提示⑦:

    在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.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/

    在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

     

     

  • 相关阅读:
    2020系统综合实践 第6次实践作业
    2020系统综合实践 第5次实践作业
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
    2020系统综合实践 第2次实践作业
    2020系统综合实践 第1次实践作业
    2019 SDN大作业
    2019 SDN上机第7次作业
    软工实践个人总结
    第03组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/wt645631686/p/10041434.html
Copyright © 2011-2022 走看看