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
相关推荐
疯狂打码的少年13 小时前
【计算机网络】子网掩码与子网划分计算(含CIDR表示法)
服务器·笔记·计算机网络·php
cc_yy_zh16 小时前
学习使用kali抓包
服务器·学习·php
ao-weilai18 小时前
Linux网络编程:网络知识基础
linux·网络·php
clz13145211 天前
设备反欺诈的四大支柱:从设备指纹到关联图谱
开发语言·php
PHP实战开发录1 天前
PHP脚本手动能跑定时任务却失败
开发语言·php·开发
彧azz1 天前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
CRMEB系统商城2 天前
CRMEB标准版系统(Java)v3.1正式发布
java·spring·微信小程序·php·教育电商
hui-梦苑2 天前
[PHP]轻量主题函数WordPress 集成 KaTeX 数学公式渲染
开发语言·php·wordpress·katex
企查查数据服务2 天前
全军禁入下客商准入风控,关联图谱与穿透核查
大数据·开发语言·数据库·php