最近Mac更新到最新的OS X EI captain系统后, 在本地用PHP开发的时候发现苹果自带的PHP被重置了,所以之前的安装的PHP扩展都没了,本来Mac是自带pear包的,以为安装上PEAR包后用PECL能很快把要用的扩展装上。所以我像往常一样运行了如下命令来安装PEAR包


sudo php /usr/lib/php/install-pear-nozlib.phar

但是系统却提示没权限往/usr/lib/文件夹下来写东西,明明是以管理员身份运行的命令却说没有权限写一个目录是不是很奇怪,后来通过在网上搜索知道苹果在最新的系统里采用了 System Integrity Protection (SIP) —— 系统完整性保护技术,SIP 技术主要是用来限制 root 用户的权限,以提升系统的健壮性。具体哪些目录受到保护,可以查看文件

/System/Library/Sandbox/rootless.conf

在Macworld里找到一篇相关文章,里面详细的列出了Mac用户如何禁用SIP,步骤如下图:
图片描述

具体步骤就是:

  1. 重启Mac

  2. 在Mac重新启动起来以前按住Command+R键直到出现苹果图标为止

  3. 进入后桌面上会问你要恢复Mac还是进行磁盘急救,不用理会,直接在屏幕左上角的菜单栏里依次选择“实用工具-->终端”打开Mac自带的命令行工具

  4. 在终端里输入csrutil disable

  5. 改完后重启

再进入系统后再安装PEAR就不会报没有写权限的错误了, 当然安装完成后建议把SIP重新启用回来,启用的方法就是把上面的步骤4里的命令替换成csrutil enable

因为我感觉用Mac自带的php还是要比用homebrew安装的php使用起来方便,那个安装完后需要设置很多环境变量才能用,所以希望这篇文章能对因同样问题而头痛的小伙伴有所帮助。

文中有关步骤参考的文章: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html


Kevin
5k 声望1.5k 粉丝