Mac编译php扩展异常错误No such file or directory

时间: 2020-04-26 14:51 栏目: PHP 浏览: 5504 赞: 0 踩: 0 字体:

以下为本篇文章全部内容:

执行 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

1、找到 .h 头文件所在的位置

ls /usr/include


看看这个目录是否存在,如果不存在我们需要手动创建

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/


例如我的系统是 MacOS Catalina 10.15.4 ,那么在安装了Xcode之后会在上面的目录存在头文件。

2、执行头文件的软连接

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 重启电脑

3、建立头文件软连接

使用这个命令添加权限,否则我们没有办法在 /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不是挨踢