1. 程式人生 > >Mac OS Sierra 安裝PHP擴展 Operation not permitted

Mac OS Sierra 安裝PHP擴展 Operation not permitted

問題解決 targe local 菜單 -m ces 操作 phpredis lan

想看詳細解讀的可以 點這裏 只需要解決問題直接往下看就好

---------------------------------------------------分 割 線-------------------------------------------------------

Mac OS Sierra 安裝PHP擴展,在make install 的時候,出現類似

cp: /usr/lib/php/extensions/no-debug-non-zts-20131226/#[email protected]12567#: Operation not permitted
make: *** [install
-modules] Error 1

的錯誤,是因為是OSX 10.11 El Capitan開始,新添加了一個新的安全機制叫系統完整性保護System Integrity Protection (SIP),所以對於目錄
/System
/sbin
/usr
不包含(/usr/local/)
僅僅供系統使用,其它用戶或者程序無法直接使用,而我們的/usr/lib/php/extensions/剛好在受保護範圍內。

解決辦法是

禁掉SIP保護機制:

  1. 重啟系統
  2. 按住Command + R (重新亮屏之後就開始按,象征地按幾秒再松開,出現蘋果標誌,ok)
  3. 菜單“實用工具” ==>> “終端” ==>> 輸入csrutil disable
    ;執行後會輸出:Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.
  4. 重啟系統

禁止掉SIP後,就可以順利的安裝了,當然裝完了以後記得重新打開SIP,方法同上,只是命令是csrutil enable。

另附Mac OS 給PHP安裝Redis擴展流程:

curl -O https://nodeload.github.com/nicolasff/phpredis/zip/master  
tar -zxf master  
cd phpredis
-master/ phpize ./configure make sudo make install # 提示 /usr/lib/php/extensions/no-debug-non-zts-xxxxxxxxx/ 表示成功 vim /etc/php.ini (如果沒有,那就復制一份/etc/php.ini.default之類的並重命名) # 添加下面這句話,告訴PHP要啟用Redis擴展,保存文件 extension=redis.so #重啟apache sudo apachectl restart #查看擴展安裝情況,出現 redis 表示安裝成功。或者看phpinfo() php -m |grep redis

另外:我出現過一個比較蹩腳的問題:

php -m |grep redis 查看確實安裝了Redis擴展,但 phpinfo 中卻沒有,當然啟動項目也是不支持Redis的(tp3.2),以上流程檢查了好幾遍搞了好久都不行,後來
php -i 發現終端中查看的PHP安裝路徑和我修改的php.ini路徑根本就不同,所以說 Apache 啟用的根本就不是我安裝了擴展的 php ,而是我系統中安裝的另一個php。
說來這個問題也怪自己,系統自帶一個php,用homebrew安裝了兩個版本php,通過命令行直接有安裝了一個php,不亂套才怪,後來刪除了 homebrew安裝的PHP,使用了系統自帶的,
再次進行以上操作,問題解決。
推薦一個切換PHP版本的:macOS Sierra上安裝Apache和多個版本的PHP切換 講得很全面了。

Mac OS Sierra 安裝PHP擴展 Operation not permitted