Mac通过brew安装的PHP8.0,编译安装swoole4

最新的PHP8.0想要通过 pecl install swoole 安装swoole 已经不行了,目前只能通过

编译安装

一、 因为目前PHP有多个版本,brew下载多版本PHP如下

bash 复制代码
#因为现在的brew只支持PHP8.1,所以需要借助 shivammathur 这个第三方扩展
brew tap shivammathur/php #挂载第三方扩展
brew search php #查看PHP版本
brew install shivammathur/php/php@8.0 #下载对应老版PHP

1.1下载好之后即可在 .bash_profile 中管理多个PHP

bash 复制代码
#php 7.4
#export PATH="$(brew --prefix php@7.4)/bin:$PATH"
#php 8.3
#export PATH="$(brew --prefix php@8.3)/bin:$PATH"
#php 8.0
export PATH="$(brew --prefix php@8.0)/bin:$PATH"

用到哪个解注释即可

二、 下载 swoole 源码

https://github.com/swoole/swoole-src/releases

https://pecl.php.net/package/swoole

https://gitee.com/swoole/swoole/tags

三选一,我用的 https://pecl.php.net/package/swoole

下载对应版本的swoole,我下载的是 swoole-4.8.12 这个老版本

具体环境

bash 复制代码
macOS
Homebrew PHP 8.0.30
Swoole 4.8.12

2.1 解压 Swoole 4.8.12

bash 复制代码
#假设你下载的是 swoole-4.8.12.tar.gz
cd ~/Downloads
tar -zxvf swoole-4.8.12.tar.gz
cd swoole-4.8.12

2.2 用 PHP 8.0 的 phpize 编译

建议直接使用绝对路径,避免系统里存在多个 PHP

bash 复制代码
#如果你的 Homebrew PHP 8.0 实际路径不同,可以先
brew --prefix php@8.0
#例如返回
/opt/homebrew/opt/php@8.0
#再进行一下命令

#第一步
/opt/homebrew/opt/php@8.0/bin/phpize
#第二部
./configure --with-php-config=/opt/homebrew/opt/php@8.0/bin/php-config

2.3 编译

bash 复制代码
make -j$(sysctl -n hw.ncpu)

这一步编译的时候可能会出现:fatal error: 'pcre2.h' file not found 只需

bash 复制代码
#需要先下载 pcre2
brew install pcre2
#PHP版本不同,可以 cd 到 /opt/homebrew/Cellar/ 目录下
#找到下面对应目录的 pcre 文件夹,在 pwd 复制地址替换即可

cp /opt/homebrew/opt/pcre2/include/pcre2.h /opt/homebrew/Cellar/php@8.0/8.0.30_11/include/php/ext/pcre
bash 复制代码
#编译完成后
make install

正常情况下最后会出现类似

Installing shared extensions: /opt/homebrew/Cellar/php@8.0/8.0.30_...

或者

Installing shared extensions: /opt/homebrew/lib/php/pecl/20200930/

2.4 找到 swoole.so

执行 find /opt/homebrew -name "swoole.so" 2>/dev/null 应该能找到

/opt/homebrew/lib/php/pecl/20200930/swoole.so

或者

/opt/homebrew/Cellar/php@8.0/8.0.30_xxx/pecl/20200930/swoole.so

2.5 给 PHP 加载 Swoole

bash 复制代码
echo "extension=swoole.so" > /opt/homebrew/etc/php/8.0/conf.d/ext-swoole.ini
#然后
php -m | grep -i swoole
#就能看到
swoole
#说明成功了
#再确认版本
php --ri swoole
#看到
Swoole => enabled
Swoole Extension Version => 4.8.12

扩展:给swoole加上swoole_loader扩展

  1. PHP 8.0 对应的扩展目录
bash 复制代码
php -i | grep extension_dir
  1. 假设得到
    extension_dir => /opt/homebrew/lib/php/pecl/20200930
bash 复制代码
#那么两个文件应该是
/opt/homebrew/lib/php/pecl/20200930/swoole_loader.so
#以及
/opt/homebrew/etc/php/8.0/conf.d/20-swoole-loader.ini
#20-swoole-loader.ini 内容
extension=swoole_loader.so

#然后
php -m
#就可以看到
swoole_loader
相关推荐
星光开发者2 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
专业程序开发源5 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
星夜夏空996 小时前
网络编程(5)—— Reactor实现(v3)
服务器·网络·php
小此方9 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
专业程序开发源10 小时前
springboot高校学生社团管理系统74810-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
AC赳赳老秦10 小时前
OpenClaw 与 FineBI 联动方案:公开数据自动采集与实时业务分析看板实践
大数据·开发语言·python·php·finebi·deepseek·openclaw
AIGC小尼10 小时前
8G 显存零基础本地部署 AI 漫剧全流程|ComfyUI+Wan2.2+FFmpeg 离线成片完整方案(含代码 / 指令 / 排坑)
人工智能·ffmpeg·php·comfyui·ai漫剧
新鲜势力呀11 小时前
PHP 文件上传系统实战:从上传卡顿到分片上传 + 秒传 + 云存储架构完整优化方案
开发语言·架构·php
专业程序开发源12 小时前
flask动漫推荐系统32319-计算机课程设计、毕业设计
java·spring boot·后端·django·flask·php·课程设计
寺中人1 天前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具