linux下编译安装swoole需先确认系统为linux/freebsd/macos且php≥7.0,再安装gcc≥4.8、make、autoconf、php-devel、pcre-devel等依赖;下载v4.x稳定版源码,执行phpize和指定php-config路径的configure,make -j$(nproc)后sudo make install,最后在php.ini中添加extension=swoole.so并重启php服务验证。

确认前提条件
确保系统是 Linux(CentOS/Ubuntu 等)、FreeBSD 或 macOS,Windows 不支持源码编译安装。Swoole 4.x 要求 PHP 版本 ≥ 7.0,推荐使用 7.2 及以上稳定版。运行 php -v 验证 PHP 已安装且版本达标。
还需提前装好以下编译工具和依赖:
- gcc(≥ 4.8)与 make
- autoconf(关键,缺失会导致 phpize 报错)
- php-devel(Ubuntu/Debian 下为 php-dev;CentOS/RHEL 下为 php-devel,含 phpize)
- pcre-devel(正则支持,CentOS 执行 yum install pcre-devel)
- 如需 HTTPS/HTTP2 支持,额外安装 openssl-devel 和 libbrotlienc-devel
下载并解压 Swoole 源码
访问官方发布页:https://www.php.cn/link/87876ca731b4c56b3f48110c953e0401,选择最新稳定版(如 v4.10.0),或用命令一键获取:
wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.10.0.tar.gz
tar -zxvf v4.10.0.tar.gz
cd swoole-src-4.10.0
注意:不要用 master 分支直接 clone,它可能不稳定;优先选 tagged release 包。
执行 phpize 并配置编译参数
先定位 phpize 路径,避免“Cannot find config.m4”错误:
which phpize 或 find /usr -name phpize 2>/dev/null
进入源码目录后,用绝对路径运行:
/usr/bin/phpize(Ubuntu 常见路径)
/usr/local/php/bin/phpize(自编译 PHP 常见路径)
接着执行 configure,务必指定 --with-php-config(指向你 PHP 安装目录下的 php-config 文件):
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
./configure --with-php-config=/usr/local/php/bin/php-config --enable-openssl --enable-http2
若提示 “Cannot find php-config”,说明路径不对,用 which php-config 或 find / -name php-config 2>/dev/null 确认真实路径。
编译安装并启用扩展
依次执行:
- make -j$(nproc)(利用多核加速编译)
- sudo make install(安装成功后会输出类似 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/)
记下该扩展目录路径,然后编辑 php.ini:
vim /usr/local/php/etc/php.ini(路径依实际而定)
在文件末尾添加:
extension=swoole.so
可选增强配置(提升安全性与兼容性):
swoole.use_shortname=off
保存退出后,重启 PHP 服务(如 systemctl restart php-fpm 或 service php7.4-fpm restart)。
验证是否生效:
php -m | grep swoole(应输出 swoole)
php --ri swoole(显示详细版本、特性支持列表)
若报错“Class 'Swoole\Http\Server' not found”,说明扩展未加载成功,请检查 php.ini 路径是否正确、是否重启了对应 PHP 进程、swoole.so 文件是否存在且权限可读。










