优先用宝塔软件商店安装swoole扩展;若无对应选项再手动编译,须严格匹配php路径、启用--enable-openssl和--enable-http2参数,并在cli与fpm的php.ini中均添加extension=swoole.so后重启php服务。

宝塔面板下优先用软件商店安装
能点安装就别开终端编译。登录宝塔 →「软件商店」→ 找到你当前用的 PHP 版本(比如 PHP 80)→「设置」→「安装扩展」→ 搜索 swoole。如果列表里有,直接点安装,然后点「重启 PHP」(不是重载)。常见失败原因:选错 PHP 版本(右上角显示 PHP-74,但项目实际跑在 /www/server/php/80/bin/php)、点了「重载」却没「重启」、装完没验证 CLI 环境。
手动编译时 phpize 和 php-config 路径必须完全一致
路径错一个字符,swoole.so 就会装进错误目录,后续加 extension=swoole.so 也无效。必须严格使用完整路径:
-
/www/server/php/80/bin/phpize(数字 80 必须和你实际 PHP 子目录一致) -
./configure --with-php-config=/www/server/php/80/bin/php-config(不能简写成php-config-8.0,也不能漏掉/bin/) - 编译成功后,终端会输出类似:
Installing shared extensions: /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/——这个路径要记下来,配extension时可能要用到
两个 php.ini 都得改,且 extension 写法有差异
php --ri swoole 报 “not found”,90% 是只改了 FPM 的配置,忘了 CLI 的配置,或反过来。宝塔中它们是两套独立配置:
- 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单独验证
configure 必须显式启用 openssl 和 http2
默认 ./configure 不开启加密和 HTTP/2 支持,但 WebSocket、HTTPS、gRPC 等场景全依赖它们。漏掉会导致运行时报 Call to undefined function swoole_http_server() 或连接被拒绝:
- 正确写法包含:
--enable-openssl和--enable-http2 - 系统依赖要提前装好:
libssl-dev(Ubuntu/Debian)或openssl-devel(CentOS/RHEL),否则 configure 会静默跳过--enable-openssl - PHP 8.5+ 还必须加
--enable-coroutine,否则Swoole\Coroutine::sleep()直接报 not available
php -m | grep swoole,它只说明模块名在列表里。真正可靠的是 /www/server/php/80/bin/php --ri swoole,输出里必须同时有 enabled 和准确的 Version,且若启用了 openssl,应看到 openssl => enabled。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











