在 Ubuntu 24.04(Noble Numbat)上安装 Swoole 扩展(PHP 8.3),目前最稳定、推荐的方式有两种:
1 首选方式:使用 Ondřej Surý 的 PPA 仓库(他维护了大量 PHP 扩展的预编译包,包括 swoole 6.1.4+,已支持 PHP 8.3),安装最简单、无需编译、更新方便。
2 备选方式:用 pecl 从源码编译安装(如果 PPA 版本不满足需求,或想用最新 master 分支)。
Swoole 官方仓库已转向维护较少的 OpenSwoole 分支,但大多数项目仍使用原版 swoole(pecl/swoole 或 PPA 中的 php-swoole)。
方式一:使用 PPA 安装(强烈推荐,5 分钟搞定)
1 添加 Ondřej Surý 的 PPA(如果之前没加过):
sudo add-apt-repository ppa:ondrej/php
sudo apt update
2 安装 Swoole 扩展:
sudo apt install php8.3-swoole
这会自动安装最新可用版本(截至 2025 年底,已有 6.1.4+ 支持 PHP 8.3)。
3 启用扩展(通过PPA包安装的扩展通常自动启用,但保险起见):
sudo phpenmod swoole
或手动在 php.ini 添加。
4 验证是否安装成功:
php -m | grep swoole
如果输出:
swoole
就说明安装swoole扩展成功。
更详细检查:
php -i | grep -i swoole
看到 swoole support => enabled 及版本信息即表示安装成功。
推荐再运行一个简单脚本进行测试:
<?php
echo swoole_version() . PHP_EOL;
var_dump(extension_loaded('swoole'));
?>
执行 php test.php。
5 重启 PHP 服务:
sudo systemctl restart php8.3-fpm # Nginx + FPM 最常见
sudo systemctl restart apache2 # 如果用 Apache
方式二:用 pecl 从源码编译安装(如果需要最新版或自定义)
1 安装编译依赖(非常重要,Ubuntu 24.04 上缺这些会编译失败):
sudo apt update
sudo apt install php8.3-dev php-pear libssl-dev zlib1g-dev libcurl4-openssl-dev
sudo apt install gcc g++ make # 基本编译工具
如果要启用协程钩子、HTTP2、MySQL 等高级功能,还可加:
sudo apt install libbrotli-dev libnghttp2-dev
2 更新 pecl 频道(避免旧缓存问题):
sudo pecl channel-update pecl.php.net
3 安装 Swoole(推荐指定稳定版,如 5.1.x 或 6.0.x,根据项目需求):
sudo pecl install swoole
或指定版本(例如最新稳定版):
sudo pecl install swoole-6.1.4
安装过程会询问是否启用各种特性(默认回车即可,大部分推荐启用):
enable sockets support? [yes] → yes
enable openssl support? [yes] → yes
enable http2 support? [yes] → yes(需 libnghttp2-dev)
enable brotli? [no] → yes(需 libbrotli-dev)
…
4 启用扩展
用 phpenmod(推荐做法):
sudo phpenmod swoole
或手动编辑 php.ini(CLI 和 FPM 分别处理):
sudo nano /etc/php/8.3/cli/php.ini
sudo nano /etc/php/8.3/fpm/php.ini
添加以下一行:
extension=swoole.so
5 验证是否安装成功:
php -m | grep swoole
如果输出:
swoole
就说明安装swoole扩展成功。
更详细检查:
php -i | grep -i swoole
看到 swoole support => enabled 及版本信息即表示安装成功。
推荐再运行一个简单脚本进行测试:
<?php
echo swoole_version() . PHP_EOL;
var_dump(extension_loaded('swoole'));
?>
执行 php test.php。
6 重启 PHP 服务:
sudo systemctl restart php8.3-fpm # Nginx + FPM 最常见
sudo systemctl restart apache2 # 如果用 Apache
注意事项与常见问题
- 依赖缺失:编译失败最常见原因是缺少 php8.3-dev 或 libssl-dev。
- 内存/CPU:编译 Swoole 需要 1-2GB 内存,低配 VPS 可能卡住或失败。
- OpenSwoole vs Swoole:如果你项目明确需要 OpenSwoole(更活跃的分支),改用 pecl install openswoole 或 PPA 中的 php8.3-openswoole(如果有)。
- 生产环境:Swoole 常用于常驻进程,建议用 Supervisor 或 systemd 管理服务,不要直接用 php-fpm。
- 性能调优:安装后可在 php.ini 添加:
swoole.use_shortname = On ; 允许 \co、\go 等短名(可选)
参考
官方文档安装Swoole。
