1. 程式人生 > >MAC 下 安裝 MAMP的PHP redis擴充套件

MAC 下 安裝 MAMP的PHP redis擴充套件

MAC 下 安裝 MAMP的PHP redis&memcache擴充套件

首先說明,所謂新增擴充套件,分兩步:

  1. 將擴充套件檔案放在擴充套件的資料夾下 
    (本次是將redis.so 放在applications/MAMP/bin/php/php5.5.18/lib/php/extensions/no-debug-non-zts-20121212下,最後一個資料夾的名字每個人可能不一樣)

  2. 修改php.ini 
    即在php.ini 中新增一行:extensions = redis.so

OK.開始安裝

  1. 首先我們要去下PHP的原始碼檔案,本人使用的PHP5.5.18 所以下載的5.5.30的原始碼,也就是說只要下載X.X對應的版本號就可以了,最後的.18和官網的.30雖然不同,但是不影響使用,下載完成解壓放到applications/MAMP/bin/php/php7.1.12/include/

    下(include是我新建的)

  2. 在終端中先進入上一步的php原始碼路徑 
    cd /Applications/MAMP/php7.1.12/include/php 
    ./configure
     
    (最後的php資料夾名字,我嫌解壓縮出來的太長給改了)。 
    這一步是為了讓下一步編譯redis.so時,有對應的php頭部檔案。

  3. 下載redis
git clone https://github.com/nicolasff/phpredis.git 
  • 1

不出意外下載之後是在根目錄下的,既然要編譯redis就要進入redis的資料夾

cd phpredis
  • 1

進入之後開始編譯

/Applications/MAMP/php/php5.5.18/bin/phpize
./configure --with-php-config=/Applications/MAMP/php/php7.1.12/bin/php-config
make
  • 1
  • 2
  • 3

編譯成功,這是會在phpredis/modules下生成了redis.so. 
現在回到開始說的,把這個redis.so 放到applications/MAMP/bin/php/php5.5.18/lib/php/extensions/no-debug-non-zts-20121212下然後修改php.ini,重啟MAMP。 
就可以在phpinfo中看到redis了。


下面說說memcache的安裝吧

和上面安裝redis的步驟一樣,只不過在編譯redis的時候 
使用下面的指令

./configure --enable-memcache --with-php-config=/applications/mamp/bin/php/php5.5.18/bin/php-config --with-zlib-dir=/usr/local/Cellar/zlib/1.2.8
  • 1
  • 2

下面說一些安裝過程中可能遇到的錯誤吧。

第一種: 
Configuring for: 
PHP Api Version: 20041225 
Zend Module Api No: 20060613 
Zend Extension Api No: 220060519 
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script. 
解決辦法: 
缺啥就裝啥,我這裡使用brew安裝的

brew install autoconf
  • 1

第二種: 
redis.so 放進去 php.ini也改了 重啟MAMP之後phpinfo沒出現redis 
解決辦法: 
這裡寫圖片描述
修改這裡的php.ini就可以了。

第三種: 
configure: error: Please specify the install prefix of iconv with –with-iconv=

解決辦法: 
brew安裝libiconv 
在第二部給configure指定路徑 
./configure –with-iconv=/usr/local/Cellar/libiconv/1.14/

第四種: 
這個算不上錯誤。 
測試:

<?php  
    $redis = new redis();  
    $redis->connect('127.0.0.1', 6379);  
    $redis->set('test',"hello world");  
    $result = $redis->get('test'); 
    var_dump($result);
?>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

正常會輸出: 
string(11) “hello world”

如果輸出: 
Fatal error: Uncaught exception ‘RedisException’ with message ‘Redis server went away’ in ‘測試檔案地址’: Redis->set(‘test’, ‘hello world’) #1 {main} thrown in ‘測試檔案地址’ 
原因有可能是沒有開啟 redis服務。上面只是下載redis用於編譯redis.so,並沒有安裝,這裡我們用brew安裝。 
解決辦法: 
在終端輸入:

 brew install redis
  • 1

安裝redis服務

redis-server
  • 1

開啟redis服務 到這裡就可以用了。

再給一個關閉服務的指令

redis-cli -p 6379 shutdown
  • 1

6379是測試埠,即測試程式碼中的6379.