一、cassandra-php擴展
1、cassandra擴展依賴庫:
- The C/C++ driver and its dependencies.
- The GNU Multiple Precision Arithmetic Library.
- Libuv
使用homebrew安裝依賴
brew install libuv cmake gmp git
使用apt-get安裝
sudo apt-get install g++ make cmake libuv-dev libssl-dev libgmp-dev php5 php5-dev openssl libpcre3-dev git
使用yum安裝
sudo yum install automake cmake gcc gcc-c++ git libtool openssl-devel wget gmp gmp-devel boost php-devel pcre-devel
pushd /tmp
wget http://dist.libuv.org/dist/v1.11.0/libuv-v1.11.0.tar.gz
tar xzf libuv-v1.11.0.tar.gz
pushd libuv-v1.11.0
sh autogen.sh
./configure
sudo make install
popd
編譯安裝cpp-driver (依賴包參照官方文檔安裝 DataStax C/C++ Driver for Apache Cassandra )
sudo yum -y install epel-release
git clone https://github.com/datastax/cpp-driver.git
mkdir cpp-driver/build
cd cpp-driver/build
cmake ..
make
make install
2、 pecl安裝 cassandra 擴展 :
若沒有pecl命令,需要先將/opt/lampp/bin/ 目錄添加至環境變量
sudo vi /etc/profile
添加 export PATH=/opt/lampp/bin/:$PATH
source /etc/profile
whereis pecl
pecl: /opt/lampp/bin/pecl
執行命令安裝cassandra
pecl install cassandra
安裝成功後將extension=cassandra.so 添加至 php.ini
加載成功後可在phpinfo中查看配置:
cassandra.so 無法成功加載問題
1、PHP Warning: PHP Startup: Unable to load dynamic library ‘/opt/lampp/lib/php/extensions/no-debug-non-zts-20151012/cassandra.so’ - libcassandra.so.2: cannot open shared object file: No such file or directory in Unknown on line 0
這個問題是缺少/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
2、 PHP Warning: PHP Startup: Unable to load dynamic library ‘/opt/lampp/lib/php/extensions/no-debug-non-zts-20151012/cassandra.so’ - /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.15’ not found
問題是lampp自帶的 libstdc++.so.6 缺少版本 GLIBCXX_3.4.15,同樣在/usr/lib64/中發現也有 libstdc++.so.6 文件,使用下面命令檢查後, usr/lib64中的版本較高, 將lampp中的替換後 問題解決
strings /opt/lampp/lib/libstdc++.so.6 | grep GLIBC