hyperf 要求 php ≥ 7.4(推荐 8.1+)、swoole ≥ 4.8.0 且启用 fiber 和 coroutine,需 redis.so ≥ 5.3.7 等协程扩展;swoft 适配 php 7.4–8.1 与 swoole 4.6–4.8,不支持 swoole 5.x。

Hyperf 和 Swoft 都是基于 Swoole 的 PHP 微服务框架,但它们对运行环境的要求存在关键差异。选对环境依赖,不是简单装个扩展就能跑起来,而是关系到协程稳定性、服务注册可用性、以及后续调试是否顺畅。
PHP 与 Swoole 版本必须严格匹配
两个框架都要求 PHP ≥ 7.4,但实际生产推荐使用 PHP 8.1+,尤其 Hyperf 3.x 对 PHP 8.1 的属性、枚举和 Fiber 支持更完善;Swoft 2.x 主要适配 Swoole 4.5–4.8,而 Hyperf 3.x 明确要求 Swoole ≥ 4.8.0(需启用 fiber 模式)。若 Swoole 编译时未开启 --enable-http --enable-openssl --enable-swoole-json 等选项,Hyperf 的 HTTP Server 或 JSON-RPC 可能直接启动失败。
- Hyperf 官方验证的组合:PHP 8.2 + Swoole 5.0.x(稳定版)或 Swoole 4.8.14+(LTS)
- Swoft 2.4+ 推荐搭配 PHP 7.4–8.1 + Swoole 4.6–4.8,不支持 Swoole 5.x 的 Fiber 调度器重构
- 执行
php --ri swoole后,确认输出中包含 coroutine => enabled 和 fiber => enabled(Hyperf 必需)
扩展依赖不止 Swoole 一个
仅安装 swoole.so 远不够。Hyperf 默认启用协程 MySQL/Redis 客户端,这就强制要求安装对应协程扩展:
-
redis.so:Hyperf 的
hyperf/redis组件依赖它,且必须是 ≥ 5.3.7 的版本(支持协程上下文) -
pdo_mysql.so 或 mysqli.so:Hyperf 的
hyperf/db在非协程模式下可降级使用,但开启co-pdo后必须用swoole_mysql协程驱动(无需额外扩展) - Swoft 使用的是自研的协程连接池,对 redis/pdo 扩展无强依赖,但启用缓存或日志异步写入时仍建议安装
redis.so
微服务组件带来额外中间件依赖
当启用服务发现、配置中心或链路追踪时,环境需提前准备对应服务端或客户端库:
- Consul 注册:Hyperf 需
hyperf/consul+ cURL(启用 HTTP/2 支持更佳),Swoft 则依赖swoft/consul,两者均要求机器能直连 Consul API 地址(默认 8500) - Nacos 支持:Hyperf 3.x 原生兼容 Nacos 2.x gRPC 接口,需系统有
grpc.so扩展(≥ 1.45);Swoft 对 Nacos 仅支持 HTTP 模式,cURL 即可 - OpenTelemetry:Hyperf 提供
hyperf/tracer,需安装opentelemetry/sdk和导出器(如 Zipkin/Jaeger 客户端),Swoft 社区暂无官方集成
开发与部署环境的常见断点
本地能跑 ≠ 生产能稳。很多问题出现在环境隔离细节上:
- Docker 中运行时,Alpine 镜像需用
pecl install swoole并确保libc兼容;glibc 基础镜像更稳妥 - Windows WSL2 下,Swoole 的
SWOOLE_BASE模式偶发信号处理异常,建议改用SWOOLE_PROCESS模式启动 - Mac M系列芯片需注意 PHP 构建为 arm64,Swoole 扩展也必须同架构编译,否则
dlopen失败
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











