Swoole安装失败主因是依赖缺失或PHP版本不匹配,需先安装php-dev/php-devel,确认PHP≥7.4且版本兼容,检查php.ini配置、扩展路径及权限,并重启对应PHP服务。

Linux 下用 pecl 安装 Swoole 失败:找不到 swoole 扩展
pecl install swoole 默认会编译最新稳定版,但多数失败不是因为命令错,而是环境缺依赖或 PHP 版本不匹配。
- 必须先装好
php-dev(Ubuntu/Debian)或php-devel(CentOS/RHEL),否则编译直接报php.h: No such file or directory - PHP 版本得 ≥ 7.4;Swoole v5.x 不支持 PHP 8.0 以下,v4.x 又不支持 PHP 8.2+,查清自己
php -v再选版本 - pecl 安装后记得确认
extension=swoole.so已写入php.ini,且不是写在被注释掉的行里 - 装完运行
php --ri swoole,如果报Extension 'swoole' not present,八成是 ini 文件没生效,用php --ini看加载路径再核对
Mac 上用 brew 装 Swoole 总提示 no available formula
brew 官方仓库早就不收 swoole 了,它现在是 PHP 扩展,不是独立 CLI 工具,不能靠 brew install swoole 解决。
- macOS 用户优先走
pecl install swoole,前提是已用 brew 装好 PHP(比如brew install php),且pecl命令能调通 - 如果用 MAMP、XAMPP 或其他集成环境,别碰 brew 的 PHP,得用它们自带的
pecl,路径通常类似/Applications/MAMP/bin/php/php8.1.12/bin/pecl - Apple Silicon(M1/M2)机器上,若编译报
arm64 architecture not supported,加参数pecl install -s swoole跳过部分检查,或手动指定架构:ARCHFLAGS="-arch arm64" pecl install swoole
swoole_server 启动报 Operation not permitted
这是 macOS 和部分 Linux 发行版(如 Ubuntu 22.04+)的默认安全策略导致的,不是代码写错了。
- 监听端口 9501)最省事
- macOS 上即使端口 > 1024,也可能因 SIP(System Integrity Protection)拦截
socket创建,临时关 SIP 是下策,建议开发阶段用127.0.0.1:9501,上线再配反向代理 - 某些云主机(如腾讯云轻量)默认关闭
epoll支持,启动时报这个错其实是底层 I/O 多路复用失败,加--enable-sockets重编译或换用select模式(性能差,仅调试用)
安装完 swoole,php -m | grep swoole 没输出
模块名在 PHP 中叫 swoole,但扩展文件名可能是 swoole.so 或 swoole.la,加载失败往往卡在路径或权限上。
- 运行
php-config --extension-dir查出扩展目录,确认swoole.so真在那儿,而不是被下到/tmp或用户家目录 - 检查
swoole.so权限是否为-rwxr-xr-x,某些系统(尤其 Docker 容器)挂载时丢了执行位,用chmod +x swoole.so补上 - 如果你用的是 PHP-FPM,改完
php.ini必须重启php-fpm进程,只 reload 不管用;CLI 模式则每次运行都读新配置,不用重启 - 多个 PHP 版本共存时(比如系统 PHP + asdf + homebrew),
pecl和php可能指向不同版本,用which php和which pecl对齐路径
extension_loaded('swoole') 返回 false。










