首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mac OS如何关闭内核保护?

我们在mac上做php开发时,需要自己去编译一些php扩展,通常的步骤可能如下:

在make阶段我们很有可能会碰到以下错误:

grep: /usr/include/php/main/php.h: No such file or directory

grep: /usr/include/php/Zend/zend_modules.h: No such file or directory

grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory

Configuring for:

PHP Api Version:

Zend Module Api No:

Zend Extension Api No:

出现上面错误的原因是因为,mac下编译所用到的一些头文件并不在/usr/include下,而是存在于路径:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/php,这时我们处理此问题的方法有2种:

创建软连(需要自行处理权限问题)

xcode-select --install(安装xcode command line tools)

完成上面步骤后,再make,发现可以正常编译。

然后make install,发现又有新的错误:

/usr/lib/php/extensions/no-debug-non-zts-20121212/#INST@870#: Permi-sion denied

然后我们尝试手动复制编译好的扩展xxyy.so到/usr/lib/php/extensions/no-debug-non-zts-20121212目录下,还是会提示权限不足,即使sudo成root操作也没有用。导致此问题的原因是新版本到MAC OS新添加了一个新的安全机制叫系统完整性保护,对于以下目录安全性保护,仅能对系统使用。因此我们在这些目录中就无法做创建、删除、编辑等操作,这些目录包含:

/System

/sbin

/usr

我们所要安装的php扩展刚好包含在这些目录下,因此就有了上面的“Permi-sion denied”错误,好在mac提供了关闭内核保护机制,方法如下:

重启mac

重启过程中按 command+r

重启后在出现到界面选择:“使用工具”->“菜单”->“终端”

在“终端”中输入“csrutil disable”

重启系统(“终端”内操作):reboot

完成以上步骤后再cp xxyy.so

扩展安装完成后,我们恢复内核保护,还是之行上面步骤,把步骤4到命令换成“csrutil enable”即可

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180115G0BLCT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券