以下为本篇文章全部内容:
执行 phpize 的时候爆以下错误,是因为mac系统里面的头文件不在 /usr/include 里面
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
ls /usr/include
看看这个目录是否存在,如果不存在我们需要手动创建
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/
例如我的系统是 MacOS Catalina 10.15.4 ,那么在安装了Xcode之后会在上面的目录存在头文件。
ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/ /usr/include
如果执行上面代码遇到 Operation not permitted
错误,这需要把电脑关机。
因为在MAC新系统下的Rootless机制,我们在root权限下也不能随便的读写所有路径了,特殊情况下我们需要关闭Rootless时,可尝试如下操作:
1、把电脑关机
2、按住 Command+R,进入恢复模式,打开Terminal。
3、csrutil disable 关闭Rootless
4、reboot 重启电脑
使用这个命令添加权限,否则我们没有办法在 /usr
下创建 include
目录
如果没有执行这段命令则会出现 Read-Only filesystem 错误
sudo mount -uw /
创建头文件存放路径
sudo mkdir /usr/include
建立软连接
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/php /usr/inlcude
这样就可以执行 phpize
去编译扩展了。最后别忘了重新开启 Rootless。
按照第二步执行下面命令就好了
csrutil disable
更多技术文章关注微信公众号:IT不是挨踢
总赞数量:18274
总踩数量:128087
文章数量:29