Swoole 是需编译安装的 C 扩展,非 Composer 可安装的 PHP 框架;Ubuntu 上应源码编译指定版本,正确配置 CLI/FPM 的 php.ini 并启用 extension=swoole,且 ./configure 阶段须明确启用 --enable-openssl 和 --enable-http2。

swoole 扩展不能用 composer 安装,也不是一个 PHP 框架——它是一个需要编译安装的 C 扩展。Ubuntu 上最稳妥的方式是源码编译,pecl install swoole 在多数新版本 PHP(如 8.1+)下会因依赖或 OpenSSL 版本问题失败。
确认 PHP 版本和开发环境是否就绪
先检查当前 PHP 是否满足最低要求(php -v 输出 ≥ 7.4);再确认 php-dev 和编译工具已安装:
-
php -v必须显示 7.4 或更高版本(Swoole 5.x 已不支持 PHP 7.2/7.3) -
which phpize若为空,运行sudo apt install php-dev(注意:不同 PHP 版本对应不同包名,如php8.1-dev) -
gcc --version应 ≥ 4.8;若无,补装build-essential
下载并编译指定版本的 swoole-src
不要直接 pecl install swoole —— 它默认拉取最新版,但 Ubuntu 的 OpenSSL 或 libcurl 版本常导致编译失败。推荐手动下载带预编译配置的稳定版:
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
- 去 GitHub releases 页面 找一个明确标注支持你 PHP 版本的 tag(例如 PHP 8.1 推荐
v5.0.3,PHP 8.2 推荐v5.1.1) - 下载解压:
wget https://github.com/swoole/swoole-src/archive/refs/tags/v5.0.3.tar.gz && tar xzf v5.0.3.tar.gz && cd swoole-src-5.0.3 - 执行:
phpize && ./configure --enable-openssl --enable-http2(加--enable-openssl是为了后续用Swoole\Http\Server支持 HTTPS) -
make && sudo make install成功后会输出类似Installing shared extensions: /usr/lib/php/20210902/
启用扩展并区分 CLI/FPM 配置
swoole.so 编译完只是放进了系统扩展目录,还没启用。关键点在于:Ubuntu 的 CLI 和 FPM 使用的是两套独立的 php.ini 文件。
- 查 CLI 配置:
php --ini | grep "Loaded Configuration File"→ 通常是/etc/php/8.1/cli/php.ini - 查 FPM 配置:
php-fpm -t 2>&1 | grep "configuration file"→ 通常是/etc/php/8.1/fpm/php.ini - 两个文件里都追加一行:
extension=swoole(注意:不是swoole.so,新版 Swoole 不需要写后缀) - 重启服务:
sudo systemctl restart php8.1-fpm;CLI 不需重启,但建议跑php -m | grep swoole验证
验证安装并避开常见报错
运行 php --ri swoole 是唯一可靠验证方式。如果看到模块信息,说明成功;如果报错,优先排查以下三项:
-
php: symbol lookup error: swoole.so: undefined symbol: OPENSSL_sk_num→ OpenSSL 版本太低,升级系统或重装libssl-dev后重新./configure && make clean && make install -
Extension 'swoole' not present→ 检查是否漏写了extension=swoole,或写在了被;extension=注释掉的行后面 - FPM 下
swoole不生效但 CLI 正常 → 一定是只改了 CLI 的php.ini,忘了 FPM 的那份
./configure 阶段就指定好,装完无法补救。

















