> 백엔드 개발 > PHP 튜토리얼 > [Redis 학습2] 여러 PHP 버전에서 phpredis 확장 설치

[Redis 학습2] 여러 PHP 버전에서 phpredis 확장 설치

WBOY
풀어 주다: 2016-07-23 08:54:44
원래의
1378명이 탐색했습니다.

배경: Redis를 설치한 후 PHP가 Redis를 작동할 수 있도록 하려면 phpredis 확장을 설치해야 합니다. 이 시스템에는 여러 PHP 버전이 있으므로 설치 과정에서 겪게 되는 함정을 공유하겠습니다.

1 다운로드

git에서 redis 확장 패키지를 다운로드하세요

  1. git clone https://github.com/nicolasff/phpredis
코드 복사
두 번째 마운트 및 구성

셸에 phpize 입력 [참고: 여러 PHP 버전을 사용할 경우 지정해야 함]

  1. ./configure
코드 복사

[phpize는 php 확장 모듈을 확장하는 데 사용됩니다. phpize를 통해 PHP 플러그인 모듈을 만들 수 있습니다.]

참고: (phpize에 여러 개의 PHP가 포함된 경우 위치를 지정해야 합니다)

  1. cuihuan:phpredis cuixiaohuan$ ../php/bin/phpize
  2. 구성 for :
  3. PHP Api 버전: 20121113
  4. Zend 모듈 Api 번호: 20121212
  5. Zend Extension Api 번호: 220121212
  6. autoconf를 찾을 수 없습니다. autoconf 설치와
  7. $PHP_AUTOCONF 환경 변수를 확인하세요. 그런 다음 이 스크립트를 다시 실행하세요.
코드 복사

오류가 보고되면 이를 설치해야 합니다. Brew install autoconf [phpize error] 그렇지 않으면, phpize가 없습니다

  1. [work@cuixiaozhuai phpredis]$ ../php/bin/phpize
  2. 구성 대상:
  3. PHP Api 버전: 20041225
  4. Zend 모듈 API 번호: 20060613
  5. Zend 확장 API 번호: 220060519
  6. [work@cuixiaozhuai phpredis]$ ./configure --with-php-config=/home/work/thirdparty/php5/bin/php- config
코드 복사

php 버전이 여러개일 경우 구성파일 지정 필요

  1. ./configure --with-php -config=/home/work/thirdparty/php5/bin/php-config
코드 복사
세 컴파일 및 설치

make 후에 make 테스트를 하는 것이 가장 좋습니다
make install

  1. cuihuan:phpredis cuixiaohuan$ make
  2. . . .
  3. 빌드가 완료되었습니다.
  4. 'make test' 실행을 잊지 마세요.
  5. cuihuan:phpredis cuixiaohuan$ make test
  6. cuihuan:phpredis cuixiaohuan$ make install
코드 복사
4가지 문제 해결

[수정되었으나 이유가 정확하지 않을 수 있음]
컴파일 오류 발생

  1. .libs/redis_cluster.o(.data.rel.local 0x0) : `ht_free_seed' 함수:
  2. /home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:226: `arginfo_scan'
  3. .libs/redis.o(.data.rel. local 0xe0):/home/work/thirdparty/php5/php5/p hpredis/redis.c:452: 여기에서 처음 정의됨
  4. /usr/bin/ld: 경고: `arginfo_scan' 기호의 크기가 에서 160에서 변경되었습니다. libs/redis.o를 .libs/redis_cluster.o
  5. .libs/redis_cluster.o(.data.rel.local 0xe0)에서 200으로: `create_cluster_context' 함수에서:
  6. /home/work/thirdparty/php5 /php5/phpredis/redis_cluster.c:276: `arginfo_kscan'의 다중 정의
  7. .libs/redis.o(.data.rel.local 0x0):/home/work/thirdparty/php5/php5/phpredis/redis .c:364: 여기서 처음 정의됨
  8. collect2: ld가 1개의 종료 상태를 반환함
  9. make: *** [redis.la] 오류 1
코드 복사

처음에는 여러 버전의 PHP로 인해 발생하는 설치 문제인 줄 알았습니다. ./configure를 사용하여 PHP 버전과 PHP 위치를 지정했습니다.
그러나 효과에는 여전히 문제가 있습니다.
마지막으로 redis_cluester.c를 수정하여 이 두 개의 중복 항목이 주석 처리되었습니다.

  1. 40
  2. 41 /* HSCAN, SSCAN , HSCAN에 대한 인수 정보 */
  3. 42 /*ZEND_BEGIN_ARG_INFO_EX(arginfo_kscan, 0, 0, 2)
  4. 43 ZEND_ARG_INFO(0, str_key)
  5. 44 ZEND_ARG_INFO(1, i_iterator)
  6. 45 ZEND_ARG_INFO(0, str_pattern)
  7. 46 ZEND_ARG_INFO(0, i_count)
  8. 47 ZEND_END_ARG_INFO();
  9. 48 */
  10. 49
  11. 50 /* SCAN에 대한 인수 정보 */
  12. 51 /*
  13. 52 ZEND_BEGIN_ARG_INFO_EX(arginfo_scan, 0, 0, 2)
  14. 53 ZEND_ARG_INFO( 1, i_iterator)
  15. 54 ZEND_ARG_INFO(0, str_node)
  16. 55 ZEND_ARG_INFO(0, str_pattern)
  17. 56 ZEND_ARG_INFO(0, i_count)
  18. 57 ZEND_END_ARG_INFO();
  19. 58 */
코드 복사
5가지 간단한 테스트
  1. $redis = new Redis();
  2. $conn = $redis->connect('127.0.0.1',6379 );
  3. echo "redis 통과 및 상태 표시
    ";
  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 '존재함'.$redis->exists('test_60s');
  12. echo '값이 없음'.$redis->get('test_60s ');
  13. $redis->delete('test_key','test_60s');
코드 복사

개인 웹사이트 원본 링크

레디스, PHP, PHPredis


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿