必须为每个PHP版本单独安装、独立配置、分别验证Swoole扩展;先确认各版本路径与运行状态,再通过软件商店一键安装(PHP 7.4–8.2)或手动编译(PHP 8.3+),严格使用对应版本的phpize/php-config,并同步修改CLI与FPM的php.ini,最后分CLI、Web、WebSocket三路验证。

在宝塔面板中让不同PHP版本各自加载对应Swoole扩展,避免「PHP 8.1能用Swoole、8.3报Class not found」这类跨版本冲突问题,必须为每个PHP版本单独安装、独立配置、分别验证。
确认各PHP版本实际路径与运行状态
先查清楚你打算启用Swoole的PHP版本具体装在哪、是否真在运行——宝塔里「已安装」不等于「已启动」,也不代表CLI和FPM加载的是同一套配置。
执行ls -d /www/server/php/*/,列出所有已安装PHP目录;再对每个目标版本(如81、83),运行/www/server/php/81/bin/php --ini | grep "Loaded"和ps aux | grep php-fpm-81,确保两处输出的php.ini路径一致且进程存在。
如果ps没看到php-fpm-81,去【软件商店】→【PHP管理】→点击对应版本右侧【设置】→【服务】→【启动】。
【务必确认CLI和FPM都指向同一个php.ini,否则后续加extension=无效】
软件商店一键安装(推荐给PHP 7.4–8.2)
这是最省事、兼容性最好的方式,宝塔已预编译适配各版本的Swoole扩展包。
第一步:进入【软件商店】→【PHP管理】→点击目标PHP版本(如PHP-8.1)右侧【设置】→切换到【安装扩展】选项卡。
第二步:在扩展列表中找到「Swoole」,点击【安装】按钮;等待状态变为「已安装」。
第三步:安装完成后,立刻执行/www/server/php/81/bin/php -m | grep swoole验证CLI端生效;再访问该PHP版本绑定的网站,放置<?php phpinfo(); ?>页面,搜索「swoole」确认FPM端也加载成功。
注意:PHP 8.3+暂未在宝塔软件商店上架Swoole扩展,需走手动编译流程。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
手动编译安装(适配PHP 8.3+或需指定Swoole版本)
当你要用Swoole 5.1+、或PHP版本高于宝塔商店支持范围时,必须手动编译。关键不是“能不能装”,而是“装给谁用”——每个PHP版本必须用自己专属的phpize和php-config。
方法一:用绝对路径调用对应PHP的构建工具
进入Swoole源码目录后,执行/www/server/php/83/bin/phpize(不是系统全局phpize),再运行./configure --with-php-config=/www/server/php/83/bin/php-config --enable-openssl --enable-http2。
方法二:编译完成后,记下扩展安装路径(如/www/server/php/83/lib/php/extensions/no-debug-non-zts-20230831/),检查php.ini中extension_dir是否精确指向该路径——写错一个字符,扩展就加载失败。
【漏掉--enable-openssl或--enable-http2会导致swoole_http_server静默崩溃,日志只显示Connection reset by peer】
方法三:在对应PHP版本的php.ini末尾添加extension=swoole(PHP 8.0+无需.so后缀),保存后执行bt restart php83重启服务。
验证多版本共存是否真正生效
不能只在一个网站测,要分角色验证:CLI命令、Web请求、WebSocket握手三路全部跑通才算成功。
对PHP 8.1:执行/www/server/php/81/bin/php -r "echo SwooleVersion::VERSION;",应输出版本号;
对PHP 8.3:访问绑定该版本的站点,运行<?php var_dump(class_exists('Swoole\Http\Server'));,返回true;
最后测试WebSocket:启动一个8.3的ws_server.php,用浏览器连接ws://yourdomain.com,若控制台无报错且收到open事件,说明Nginx反向代理+SSL+多版本路由全链路打通。

















