Ubuntu 24系统PHP 8.3安装Swoole扩展的方法

在 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