程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> OS X EI Capitan安裝mcrypt,capitanmcrypt

OS X EI Capitan安裝mcrypt,capitanmcrypt

編輯:關於PHP編程

OS X EI Capitan安裝mcrypt,capitanmcrypt


OS X EI Capitan安裝mcrypt

  (我的博客原文:http://www.jmolboy.com/2015/12/01/mcrypt-extension-on-EI-Capitan/)   12月 01, 2015 發布在 php擴展

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),所以對於目錄

  • /System
  • /sbin
  • /usr
  • 不包含(/usr/local/)

僅僅供系統使用,其它用戶或者程序無法直接使用,而我們的/usr/lib/php/extensions/剛好在受保護范圍內

禁SIP

所以解決方法就是禁掉SIP保護機制,步驟是:

  • 重啟系統
  • 按住Command + R
  • 菜單“實用工具” ==>> “終端” ==>> 輸入csrutil disable;執行後會輸出:Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.
  • 再次重啟系統

禁止掉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/)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved