mac下編譯安裝php擴充套件
redis
1. 下載原始檔:
-
這裡就會有個問題,到哪裡下載呢 – –
-
答案是 php的官方擴充套件庫–pecl
-
開啟 pecl網站 是可以在上面直接通過瀏覽器下載的,但是我們為了裝逼,我們要用命令列下載! – –
-
wget https://pecl.php.net/get/redis-3.1.2.tgz
-
但是當我們執行上面的命令會出現如下提示
-
-bash: wget: command not found
-
裝逼失敗。。。mac預設沒有wget命令- –
-
網上有多種方法,比方說用homebrew 安裝 wget,那我們又要去裝homebrew….我選擇拒絕,mac 沒有 wget 但是她有 curl
-
所以我們的命令變成
-
curl https://pecl.php.net/get/redis-3.1.2.tgz
-
但是如果你真的這樣去敲命令,你又上當了–
-
因為curl 需要用 -o 引數指定一下輸出的檔名稱,不然。。。反正就顯示一堆亂碼,下載不成功(別問我為什麼知道…)
-
所以最後我的究極下載命令變成了 (別問我為什麼要用sudo….):
-
sudo curl -o php-redis-3.1.2.tgz https://pecl.php.net/get/redis-3.1.2.tgz
(加粗是一種體貼)
2. 解壓原始檔:
-
同樣這裡也有問題,怎麼解壓呢–
-
我們來 百度一下
-
通過學習我們知道我們應該用
tar -xzf
命令,解壓.tgz 字尾的檔案 -
sudo tar -xzf php-redis-3.1.2.tgz
-
我們看到
redis-3.1.2
資料夾,說明解壓成功
3. 編譯原始檔
-
終於到了編譯了。。。美滋滋:
-
先進入目錄:
cd redis-3.1.2
-
執行phpize命令生成配置檔案:
sudo phpize
-
這時如果沒有安裝m4 和 autoconf的話會提示如下錯誤:
-
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script
-
那我們來安裝一下,命令如下(執行命令不要急,一個個來):
su - cd /usr/local curl -o m4-1.4.16.tar.gz http://ftp.gnu.org/gnu/m4/m4- 1.4.16.tar.gz tar -zvxf m4-1.4.16.tar.gz cd m4-1.4.16/ ./configure && make && make install cd ../ curl -o autoconf-2.62.tar.gz http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz tar -zvxf autoconf-2.62.tar.gz cd autoconf-2.62/ ./configure && make && make install
-
安裝完成後,我們再去redis 目錄去 執行
phpsize
(因為我們現在已經切換到root 賬號就不需要 sudo了)發現沒有報錯了。Configuring for: PHP Api Version: 20131106 Zend Module Api No: 20131226 Zend Extension Api No: 220131226
-
-
執行./configure:
-
需要找一下php-config的位置:
-
which php-conifg
-
我本地的位置是:
-
/usr/bin/php-config
-
所以我們執行的命令是:
./configure --with-php-config=/usr/bin/php-config
-
-
編譯 執行命令:
make
-
安裝 執行命令:
make install
-
這時程式會講編譯好的.so 檔案拷貝到php預設的擴充套件資料夾下面
-
但是mac的 /usr 檔案下的有些目錄 root 賬戶也沒有寫許可權,所以會報錯
-
這時 需要 重啟電腦 按住 command + r 進入安全模式,開啟終端
csrutil disable
將csrutil
這個功能禁用掉,這樣root就有許可權了,重新執行命令,得到如下結果:
Libraries have been installed in: /usr/local/redis-3.1.2/modules ........ Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20131226/
-
4. 配置php.ini
-
再php.ini中新增:
extension = redis.so
5. 重啟apache
6. 檢視phpinfo()
-
在命令列輸入:
php -m|grep redis
-
可以看到:
redis