Hyperf 3.1生产环境稳定运行必须确保Swoole扩展正确安装并加载于PHP CLI环境,否则启动报“Class 'Swoole\Http\Server' not found”;需PHP 7.2–8.2、phpize可用、OpenSSL启用,php -m含swoole且版本≥4.8.0,php --ri swoole中openssl与http2均启用。

要让Hyperf 3.1在生产环境稳定运行,必须确保Swoole扩展已正确安装并加载到PHP CLI环境中,否则启动时会直接报错“Class 'Swoole\Http\Server' not found”,连服务进程都拉不起来。
确认PHP版本与基础依赖是否达标
执行php -v,确认输出版本号≥7.2且≤8.2——Hyperf 3.1官方明确不支持PHP 8.3及以上,若显示8.3.x,必须降级或切换分支。
运行which phpize,检查命令是否存在;若提示command not found,说明缺少PHP开发头文件,Ubuntu/Debian需sudo apt install php-dev,CentOS/RHEL则用sudo yum install php-devel。【缺少 phpize 会导致后续编译流程中断】
执行php -r "echo extension_loaded('openssl') ? 'yes' : 'no';",输出必须为yes。Swoole的HTTPS、HTTP/2、WebSocket wss功能强依赖OpenSSL,未启用时这些协议将静默降级或连接失败。
验证Swoole扩展是否已加载
先查当前CLI使用的php.ini路径:php --ini | grep "Loaded Configuration File"。
打开该文件,在末尾添加extension=swoole(PECL安装)或extension=swoole.so(源码编译安装),保存退出。【写错文件路径或写进错误的 php.ini 会导致 php -m 看不到 swoole】
重启PHP-FPM服务(如sudo systemctl restart php*-fpm),再运行php -m | grep swoole,屏幕上必须出现swoole字样才算成功。
最后执行php -r "echo Swoole\VERSION;",确认输出版本不低于4.8.0——Hyperf 3.1最低要求Swoole 4.8+,旧版无法通过注解反射校验。
检查Swoole运行时配置是否匹配Hyperf需求
第一步:运行php --ri swoole,查看输出中的version和support async redis等关键行。
第二步:确认以下三项必须同时满足:
- Swoole版本为4.8.0~5.1.x(避开5.0.0~5.0.3存在协程调度bug的区间)
- enable openssl → true
- enable http2 → true(Hyperf的gRPC与HTTP/2路由依赖此项)
第三步:若任一条件不满足,立即修正——比如openssl为false,说明编译时未加--enable-openssl参数,需重新源码编译;http2为false则同样需重装并指定--enable-http2。


















