首頁 > 後端開發 > php教程 > 【redis學習二】多php版本下phpredis擴充安裝

【redis學習二】多php版本下phpredis擴充安裝

WBOY
發布: 2016-07-23 08:54:44
原創
1375 人瀏覽過

背景:安裝完redis之後,需要安裝phpredis擴展,才能讓php操作redis;本機有多個php版本,安裝過程中遇到的坑分享一下。

一 下載

git上下載redis的擴充包

  1. git clone https://github.com/nicolasff/phpredis

複製程式碼
    二掛載和configure
  1. 在shell中輸入phpize 【注意:多個php版本的時間需要指定】
./configure

複製程式碼

【phpize是用來擴充php擴充模組的,透過phpize可以建立php的外掛模組】
  1. 注意:(phpize 如果包含多個php,必須指定位置)
  2. cuihuan:phpredis cuixiaohuan$ ../php/bin/phpize
  3. Configuring for :
  4. PHP Api Version: 20121113
Zend Module Api No: 20121212
Zend Extension Api No: 220121212Cannot find autoconf.Opindoutoq. able. Then , rerun this script.

複製程式碼
    報錯的話需要安裝:brew install autoconf [phpize 報錯] 🎜>
[work@cuixiaozhuai phpredis]$ ../php/bin/phpize Configuring for:PHP Api Version: 20041225
Zendend Module Api No120 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

複製程式碼
  1. 三編譯安裝
  2. make 之後最好make test
  3. make install
  4. cuihuan:phpredis cuixiaohuan$ make
。 。 。
Build complete.Don't forget to run 'make test'.
cuihuan:phpredis cuixiaohuan$ make test

cuihuan:Dmmm
複製程式碼

四問題修復
【已修復,但原因可能不太準確】
    make編譯報錯
  1. .libs/redis_cluster.o(.data.rel.local 0x0) : In function `ht_free_seed':
  2. /home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:226: multiple definition of `arginfo_scan'
  3. .libs/redis.o(.data.rel. local 0xe0):/home/work/thirdparty/php5/php5/p hpredis/redis.c:452: first defined here
  4. /usr/bin/ld: Warning: size of symbol `arginfo_scan' changed from 160 in . libs/redis.o to 200 in .libs/redis_cluster.o
  5. .libs/redis_cluster.o(.data.rel.local 0xe0): In function `create_cluster_context':
  6. /home/work/thirdparty/php55 /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 here
collect2: ld returned 1 exit statusmake: *** [redis.la] Error 1


複製程式碼>

最初以為是php多個版本產生install問題,採用./configure 指定php版本,指定php位置。
但是效果還是有問題。
最後透過修改redis_cluester.c 中,註解掉了這兩個重複的
  1. 40
  2. 41 /* Argument info for HSCANment info for HSCANment 、HS 🎜>
  3. 45 ZEND_ARG_INFO(0, str_pattern)
  4. 46 ZEND_ARG_INFO(0, i_count)
  5. 47 ZEND_END_ARG_INFO( > 49
  6. 50 /* Argument infor for SCAN */
  7. 51 /*
  8. 52 ZEND_BEGIN_ARG_INFO_EX(arginfo_scan, 0, 0,533, 53, 53,03_scan> ZEND_ARG_INFO(1, i_iterator)
  9. 54 ZEND_ARG_INFO(0, str_node)
  10. 55 ZEND_ARG_INFO(0, str_patEND)
  11. 55 ZEND_ARG_INFO(0, str_patEND)
  12. 57 ZEND_END_ARG_INFO();
  13. 58 */
  14. 複製程式碼
  15. 五簡單測試
    1. $redis = new Redis();
    2. $conn = $redis->connect('127.0.0.1',6379);
    3. echo "redis pass and status show";
    4. var_dump($redis->ping());
    5. $redis->set('test_key',' test_value');
    6. echo "test set val=".$redis->get('test_key')."";
    7. $redis->setnx('unique_key'," unique_val");
    8. $redis->setnx('unique_key',"unique_val_2");
    9. echo $redis->get("unique_key");
    10. sleep(60) ;
    11. echo 'is exist'.$redis->exists('test_60s');
    12. echo 'not has value'.$redis->get('test_60s');
    13. $redis->delete ('test_key','test_60s');
    複製程式碼

    個人小站原文連結

redis, php, phpredis


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板