MAC 下 安裝 MAMP的PHP redis擴充套件
MAC 下 安裝 MAMP的PHP redis&memcache擴充套件
首先說明,所謂新增擴充套件,分兩步:
將擴充套件檔案放在擴充套件的資料夾下
(本次是將redis.so 放在applications/MAMP/bin/php/php5.5.18/lib/php/extensions/no-debug-non-zts-20121212下,最後一個資料夾的名字每個人可能不一樣)修改php.ini
即在php.ini 中新增一行:extensions = redis.so
OK.開始安裝
首先我們要去下PHP的原始碼檔案,本人使用的PHP5.5.18 所以下載的5.5.30的原始碼,也就是說只要下載X.X對應的版本號就可以了,最後的.18和官網的.30雖然不同,但是不影響使用,下載完成解壓放到
applications/MAMP/bin/php/php7.1.12/include/
在終端中先進入上一步的php原始碼路徑
cd /Applications/MAMP/php7.1.12/include/php
./configure
(最後的php資料夾名字,我嫌解壓縮出來的太長給改了)。
這一步是為了讓下一步編譯redis.so時,有對應的php頭部檔案。- 下載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.