mac操作系統升級到10.11.2(OS X EI Capitan)後,系統自帶的php也被修改覆蓋了;之前安裝的php擴展全無法繼續使用了;而mcrypt擴展急需使用,可是怎麼安裝都無法安裝成功;困擾了好久。編譯後執行安裝時總是提示
1
[cp: /usr/lib/php/extensions/no-debug-non-zts-20121212/#INST@17000#: Operation not permitted]
終於找到了問題所在
當你進入/usr/lib/php/extensions/目錄時你會發現目錄根本無法操作(手動拷貝、移動),使用root在終端也沒有權限;可是不可能啊?我已經是root用戶了,為什麼還不允許;原來是OSX 10.11 El Capitan新添加了一個新的安全機制叫系統完整性保護System Integrity Protection (SIP),所以對於目錄
僅僅供系統使用,其它用戶或者程序無法直接使用,而我們的/usr/lib/php/extensions/剛好在受保護范圍內
所以解決方法就是禁掉SIP保護機制,步驟是:
禁止掉SIP後,就可以順利的安裝了,當然裝完了以後你可以重新打開SIP,方法同上,只是命令是csrutil enable
1
cd ~ ; mkdir mcrypt ; cd mcrypt
分別下載
libmcrypt2.5.8、你系統的php版本到mcrypt目錄
解壓
1
tar -zxvf libmcrypt-2.5.8.tar.gz tar -zxvf php-5.5.27.tar.gz rm *.gz
安裝libmcrypt
1
cd libmcrypt-2.5.8 ./configure make sudo make install
安裝autoconf
1
cd ~/mcrypt curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz tar xvfz autoconf-latest.tar.gz cd autoconf-2.69/ ./configure make sudo make install
編譯mcrypt的php擴展
1
cd ../php-5.5.27/ext/mcrypt/ /usr/bin/phpize
上面會輸出:
1
Configuring for: PHP Api Version: 20121113 Zend Module Api No: 20121212 Zend Extension Api No: 220121212
接著編譯:
1
./configure make sudo make install
上面會輸出:
1
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20121212/
如果出現錯誤(我遇到的):
1
cp: /usr/lib/php/extensions/no-debug-non-zts-20121212/#INST@17000#: Operation not permitted
就說明你需要先禁掉SIP(如何禁掉SIP見上面)
修改/etc/php.ini,增加擴展extension=mcrypt.so
再重啟apache
1
sudo apachectl restart
再看你的phpinfo();就會出現mcrypt信息了;
(我的博客原文:http://www.jmolboy.com/2015/12/01/mcrypt-extension-on-EI-Capitan/)