pecl install swoole 是最稳的启动方式;宝塔PHP 8.2软件商店暂未上架Swoole,必须命令行安装,它自动适配环境且兼容性最佳,需先装编译工具并分别配置CLI与FPM的php.ini,最后用php --ri swoole验证启用状态。

pecl install swoole 是最稳的启动方式
宝塔面板 PHP 8.2 软件商店里没 Swoole 按钮?不是你漏点了,是官方还没上架——当前(2026年9月)宝塔仍不支持 PHP 8.2 的图形化扩展安装。必须走命令行,而 pecl install swoole 就是最直接、兼容性最好的路径。
它会自动识别你的 PHP 8.2 环境(头文件、php-config、ABI 版本),比手动编译少踩一半坑。前提是服务器能联网,且已装基础编译工具:
-
yum install -y gcc gcc-c++ make autoconf(CentOS/RHEL/AlmaLinux) -
apt install -y build-essential autoconf(Ubuntu/Debian)
然后执行:
/www/server/php/82/bin/pecl install swoole
安装过程会交互询问是否启用 http2、openssl、sockets 等,按需输 y 或直接回车用默认。成功后终端最后一行一定是类似:
立即学习“PHP免费学习笔记(深入)”;
extension=swoole.so
这一行必须复制下来,后面要用。
必须同时改 CLI 和 FPM 的 php.ini
只改一个配置文件,Swoole 就是“半残”状态:运行 php -m | grep swoole 看起来正常,但网页里 phpinfo() 找不到 Swoole,或者 Hyperf 启动报 Class 'Swoole\Http\Server' not found —— 这几乎全是因 FPM 配置没生效。
宝塔中 PHP-FPM 和 CLI 使用两套独立的 php.ini:
- CLI 配置路径:
/www/server/php/82/etc/php.ini - FPM 配置路径:
/www/server/php/82/etc/php-fpm.d/www.conf,在php_admin_value[extension]下追加,或更稳妥地:在/www/server/php/82/etc/php.ini底部直接加extension=swoole.so
改完后别忘了重启服务:
service php-fpm-82 restart
验证不能只看 php -m,得用 php --ri swoole
php -m 只说明模块名被列出来了,不等于扩展真加载了;真正有效的验证命令只有一个:
php --ri swoole
输出里必须同时满足三项:
-
Version => 5.1.x(或你装的对应版本) -
swoole support => enabled(不是disabled) -
Directive => Local Value行存在(证明 ini 已读取生效)
如果 php --ri swoole 报错、空白或显示 not found,哪怕 Composer 装了一堆 swoole/http-server,也完全没用——Swoole C 扩展没跑起来,PHP 类库连底座都没有。
Composer 不能装 Swoole 扩展,这点最容易被带偏
执行 composer require swoole/http-server 或 composer create-project hyperf/hyperf-skeleton,只是拉 PHP 类库代码,不是装扩展。它们依赖底层 swoole.so 提供协程、TCP Server、异步 IO 等能力。
没装好 C 扩展就跑这些包,必然报错:
Class 'Swoole\Http\Server' not found
所以别被脚手架文档误导——所有“一键安装 Hyperf”的教程,前提都是你本地 PHP 8.2 已经 php --ri swoole 显示 enabled。否则就是先装轮子再造车。
真正容易被忽略的是:Swoole 5.x+ 在 PHP 8.2 上默认不自动 hook 文件 IO(比如 file_get_contents() 还是同步的),必须显式调用 Swoole\Runtime::enableCoroutine() 或在 php.ini 中设 swoole.enable_coroutine = On,否则协程不会生效。



















