必须重装,因php 8.0 abi与7.3完全不兼容,旧swoole.so无法加载;优先宝塔软件商店安装,若无则手动编译,须严格匹配/phpize和/php-config路径,启用--enable-openssl和--enable-http2,并在cli与fpm的php.ini中均添加extension=swoole.so后重启php服务。

swoole.so 文件会被拒绝加载,php --ri swoole 直接报 “not found”,php -m 里也看不到模块名。
为什么不能复用旧的 swoole.so?
PHP 扩展是针对特定 PHP 主版本和 ZTS/NTS 模式编译的二进制文件。swoole.so 依赖的内部结构(如 zend_object、zend_string 布局)在 PHP 8.0 中已重构,强行加载会导致 Segmentation fault 或直接静默跳过。
宝塔面板下怎么重装才不踩坑?
- 先确认你实际用的是哪个 PHP 子目录:执行
/www/server/php/80/bin/php -v,确保路径里的数字是80(不是73或74) - 登录宝塔 →「软件商店」→ 找到「PHP 80」→「设置」→「安装扩展」→ 搜索
swoole→ 点安装 → **点「重启 PHP」**(不是「重载」) - 如果列表里没有 swoole,说明面板未上架该版本预编译包,必须手动编译——但别急着
make,先核对两件事:/www/server/php/80/bin/phpize和--with-php-config=/www/server/php/80/bin/php-config路径是否完全一致
手动编译时最容易漏的关键参数
PHP 8.0 下跑 HTTP/2、WebSocket over HTTPS、gRPC 等功能,./configure 必须显式带上:
-
--enable-openssl(否则swoole_http_server类不可用,连接 HTTPS 会报 SSL operation failed) -
--enable-http2(否则Swoole\Http2\Server不存在) - 系统级依赖也要提前装好:
libssl-dev(Debian/Ubuntu)或openssl-devel(CentOS/RHEL),否则 configure 会静默跳过 openssl 支持
装完验证必须分 CLI 和 FPM 两路走
宝塔里它们用的是两个独立配置文件:
- FPM 加载:
/www/server/php/80/etc/php.ini - CLI 加载:
/www/server/php/80/bin/php.ini - 两个文件末尾都得加
extension=swoole.so(PECL 安装新版可能是extension=swoole,无 .so 后缀) - 改完只重启 PHP 服务(宝塔点「重启」),CLI 不需要重启,但要用
/www/server/php/80/bin/php --ri swoole单独验证
Swoole\Http\Server,不代表命令行也能跑 php artisan swoole:http start——后者只认 CLI 的 php.ini,而很多人只改了 FPM 那份。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











