MacOs 安装扩展错误列表

操作系统 MacOs 10.15.4
整理今日安装php扩展遇到的问题

1、could not find php.h
2、Operation not permitted
3/usr/include: Read-only file system

以上问题都是由于无脑查找安装扩展方法,不理解实际运用导致的问题,其实道理很简单,都是由于macOS Catalina 这个SIP(System integrity Protection-系统完整性保护)导致,同时还有就是系统自带的php的include目录引发的一系列问题,具体的问题在网上可以搜索到很多。
先关闭SIP保护,然后再安装扩展

    # 查看状态
    csrutil status 
    # 重启电脑  Cmd+R开机启动
    # 进命令行 关闭SIP保护
    csrutil disable
    #再查看状态 确保关闭 重启电脑

以安装swoole扩展为例

1、下载源码包swoole-4.5.1
2、解压缩目录 完成后目录名成swoole-src-4.5.1

    tar -zxvf swoole-src-4.5.1.tar.gz

3、进入目录

    cd swoole-src-4.5.1

4、查看SDK工作目录(这一步需要xcode支持,一般系统默认安装,在此不尽兴展开)[https://bbqsoftwares.com/blog/xdebug-catalina#installation-of-xdebug-on-macos-catalina-10-15]

    xcrun --show-sdk-path

=>

    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

5、创建软连接(根据上面的实际目录进行链接)

    ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/include /usr/include

6、拷贝 phpize 和 php-config 至此工作目录

    sudo cp /usr/bin/phpize ./
    sudo cp /usr/bin/php-config ./

7、修改phpize和php-config
vim 编辑phpize 和 php-config 查找includedir 所在行修改includedir为刚刚创建软连接的目录,根据自己就实际的目录进行修改
phpize

  4    prefix='/usr'
  5 datarootdir='/usr/php'
  6 exec_prefix="`eval echo ${prefix}`"
  7 phpdir="`eval echo ${exec_prefix}/lib/php`/build"
  8 includedir="`eval echo ${prefix}/local/include/include`/php"

php-config

  9 include_dir="${prefix}/local/include/include/php"

8、执行phpize命令

    ./phpize

9、执行

    ./configure 

10、执行make

    make
执行完成会在当前目录下的modules目录生成swoole.so动态链接文件

11、执行make install

    make install 

这一步会报错没关系,执行就好,这里摘自别人的解释
[Again, this command will fail because it can’t move the extension to the right place. SIP will prevent it. But no worries, we’ll take care of that manually at the next step. make install is still required as it will sign the *.so file.]

12、创建php extension文件夹,并将swoole.so拷贝至extension目录

    sudo mkdir -p /usr/local/php/extensions
    sudo cp modules/swoole.so /usr/local/php/extensions/

13、修改php.ini

[swoole]
extension=/usr/local/php/extensions/swoole.so

14、重启php-fpm

15、查看扩展

    php -m|grep swoole

或者 phpinfo()查看

本次问题总结 在于MacOs 10.15.4系统下出现的情况的解决方案,仅供参考,此系统下的扩展安装都可以参考这种解决方法。
参考文档
Installation of Xdebug on MacOS Catalina 10.15
macOS Catalina 下安装PHP Redis扩展操作系统 MacOs 10.15.4
整理今日安装php扩展遇到的问题

1、could not find php.h
2、Operation not permitted
3/usr/include: Read-only file system

以上问题都是由于无脑查找安装扩展方法,不理解实际运用导致的问题,其实道理很简单,都是由于macOS Catalina 这个SIP(System integrity Protection-系统完整性保护)导致,同时还有就是系统自带的php的include目录引发的一系列问题,具体的问题在网上可以搜索到很多。
先关闭SIP保护,然后再安装扩展

    # 查看状态
    csrutil status 
    # 重启电脑  Cmd+R开机启动
    # 进命令行 关闭SIP保护
    csrutil disable
    #再查看状态 确保关闭 重启电脑

以安装swoole扩展为例

1、下载源码包swoole-4.5.1
2、解压缩目录 完成后目录名成swoole-src-4.5.1

    tar -zxvf swoole-src-4.5.1.tar.gz

3、进入目录

    cd swoole-src-4.5.1

4、查看SDK工作目录(这一步需要xcode支持,一般系统默认安装,在此不尽兴展开)[https://bbqsoftwares.com/blog/xdebug-catalina#installation-of-xdebug-on-macos-catalina-10-15]

    xcrun --show-sdk-path

=>

    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

5、创建软连接(根据上面的实际目录进行链接)

    ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/include /usr/include

6、拷贝 phpize 和 php-config 至此工作目录

    sudo cp /usr/bin/phpize ./
    sudo cp /usr/bin/php-config ./

7、修改phpize和php-config
vim 编辑phpize 和 php-config 查找includedir 所在行修改includedir为刚刚创建软连接的目录,根据自己就实际的目录进行修改
phpize

  4    prefix='/usr'
  5 datarootdir='/usr/php'
  6 exec_prefix="`eval echo ${prefix}`"
  7 phpdir="`eval echo ${exec_prefix}/lib/php`/build"
  8 includedir="`eval echo ${prefix}/local/include/include`/php"

php-config

  9 include_dir="${prefix}/local/include/include/php"

8、执行phpize命令

    ./phpize

9、执行

    ./configure --with-php-config=./   

10、执行make

    make
执行完成会在当前目录下的modules目录生成swoole.so动态链接文件

11、执行make install

    make install 

这一步会报错没关系,执行就好,这里摘自别人的解释
[Again, this command will fail because it can’t move the extension to the right place. SIP will prevent it. But no worries, we’ll take care of that manually at the next step. make install is still required as it will sign the *.so file.]

12、创建php extension文件夹,并将swoole.so拷贝至extension目录

    sudo mkdir -p /usr/local/php/extensions
    sudo cp modules/swoole.so /usr/local/php/extensions/

13、修改php.ini

[swoole]
extension=/usr/local/php/extensions/swoole.so

14、重启php-fpm

15、查看扩展

    php -m|grep swoole

或者 phpinfo()查看

本次问题总结 在于MacOs 10.15.4系统下出现的情况的解决方案,仅供参考,此系统下的扩展安装都可以参考这种解决方法。
参考文档
Installation of Xdebug on MacOS Catalina 10.15
macOS Catalina 下安装PHP Redis扩展

本作品采用《CC 协议》,转载必须注明作者和本文链接
laravel_lost
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

可以尝试使用pecl命令安装,感觉和homebrew 差不多

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!