ホームページ > バックエンド開発 > PHPチュートリアル > 複数の php 環境での phpredis 拡張機能のインストール

複数の php 環境での phpredis 拡張機能のインストール

WBOY
リリース: 2016-06-23 13:25:22
オリジナル
939 人が閲覧しました

最初のダウンロード

gitでredis拡張パッケージをダウンロードします

git clone https://github.com/nicolasff/phpredis
ログイン後にコピー

2回目のマウントと設定

シェルにphpizeと入力します [注: 複数のphpバージョンを指定する必要があります]

 ./configure 
ログイン後にコピー

[phpizeはFor phpの展開に使用されます拡張モジュール、php プラグイン モジュールは、phpize を通じて確立できます]

注: (phpize に複数の php が含まれている場合は、場所を指定する必要があります)

cuihuan:phpredis cuixiaohuan$ ../php/bin/phpizeConfiguring for:PHP Api Version:         20121113Zend Module Api No:      20121212Zend Extension Api No:   220121212Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.
ログイン後にコピー

エラーが報告された場合は、インストールする必要があります: brew install autoconf [phpizeそれ以外の場合は、phpize がありません

[work@cuixiaozhuai phpredis]$ ../php/bin/phpize        Configuring for:PHP Api Version:         20041225Zend Module Api No:      20060613Zend Extension Api No:   220060519[work@cuixiaozhuai phpredis]$  ./configure --with-php-config=/home/work/thirdparty/php5/bin/php-config 
ログイン後にコピー

複数のバージョンの php がある場合、設定ファイルを指定する必要があります

 ./configure --with-php-config=/home/work/thirdparty/php5/bin/php-config 
ログイン後にコピー

3 つのコンパイルとインストール

make の後にテストを行うのが最善です
make install

cuihuan:phpredis cuixiaohuan$ make。。。Build complete.Don't forget to run 'make test'.cuihuan:phpredis cuixiaohuan$ make testcuihuan:phpredis cuixiaohuan$ make install
ログイン後にコピー

4 つの問題修正

[修正されましたが、理由は同じではない可能性があります正確ではありません]
コンパイルエラーにする

.libs/redis_cluster.o(.data.rel.local+0x0): In function `ht_free_seed':/home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:226:     multiple definition of `arginfo_scan'.libs/redis.o(.data.rel.local+0xe0):/home/work/thirdparty/php5/php5/p hpredis/redis.c:452: first defined here/usr/bin/ld: Warning: size of symbol `arginfo_scan' changed from 160 in .libs/redis.o to 200 in .libs/redis_cluster.o.libs/redis_cluster.o(.data.rel.local+0xe0): In function `create_cluster_context':/home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:276:     multiple definition of `arginfo_kscan'.libs/redis.o(.data.rel.local+0x0):/home/work/thirdparty/php5/php5/phpredis/redis.c:364: first defined herecollect2: ld returned 1 exit statusmake: *** [redis.la] Error 1
ログイン後にコピー

最初は、複数のバージョンの PHP によって生成されたインストールの問題だと思ったので、./configure を使用して PHP のバージョンを指定し、 phpの場所。
しかし、その効果にはまだ問題があります。
最後に、redis_cluester.c を変更することで、これら 2 つの重複

  40   41 /* Argument info for HSCAN, SSCAN, HSCAN */  42 /*ZEND_BEGIN_ARG_INFO_EX(arginfo_kscan, 0, 0, 2)  43     ZEND_ARG_INFO(0, str_key)  44     ZEND_ARG_INFO(1, i_iterator)  45     ZEND_ARG_INFO(0, str_pattern)  46     ZEND_ARG_INFO(0, i_count)  47 ZEND_END_ARG_INFO();  48 */  49   50 /* Argument infor for SCAN */  51 /*  52 ZEND_BEGIN_ARG_INFO_EX(arginfo_scan, 0, 0, 2)  53     ZEND_ARG_INFO(1, i_iterator)  54     ZEND_ARG_INFO(0, str_node)  55     ZEND_ARG_INFO(0, str_pattern)  56     ZEND_ARG_INFO(0, i_count)  57 ZEND_END_ARG_INFO();  58 */    
ログイン後にコピー

5 つの簡単なテスト

<?php    $redis = new Redis();    $conn = $redis->connect('127.0.0.1',6379);    echo "redis pass and status show</br>";    var_dump($redis->ping());    $redis->set('test_key','test_value');    echo "test set val=".$redis->get('test_key')."</br>";    $redis->setnx('unique_key',"unique_val");    $redis->setnx('unique_key',"unique_val_2");    echo $redis->get("unique_key");    sleep(60);    echo 'is exist'.$redis->exists('test_60s');    echo 'not has value'.$redis->get('test_60s');    $redis->delete('test_key','test_60s');
ログイン後にコピー
がコメントアウトされました。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート