需先安装PHP Swoole扩展,再运行composer install;执行php -m | grep swoole确认是否加载,未输出则用pecl install swoole(Linux/macOS)或下载php_swoole.dll配置php.ini(Windows),最后确保composer.json中"ext-swoole": "*"仅作校验用。

composer install 报错 “swoole not found” 怎么办
不是 composer 本身不支持 Swoole,而是 Swoole 是 PHP 扩展,必须先在系统里装好二进制扩展,composer 才能验证通过并允许安装依赖。
常见错误现象:composer require swoole/ide-helper 成功,但 composer require easyswoole/easyswoole 失败,提示 ext-swoole not found 或类似 The requested PHP extension swoole is missing 的错误。
- 先确认 PHP 是否已加载 Swoole:运行
php -m | grep swoole,没输出就说明扩展没装或没启用 - 别试图用
composer require ext-swoole—— 这个包不存在,ext-swoole是composer.json里声明的“扩展依赖”,不是可安装的包 - Linux/macOS 推荐用 pecl 安装:
pecl install swoole;Windows 用户必须去 windows.php.net/pecl 下载对应 PHP 版本和线程安全(TS/NTS)的php_swoole.dll,再配置php.ini
composer.json 里写 "ext-swoole": "*" 有用吗
有用,但只起校验作用,不是安装开关。
这个写法出现在 require 或 require-dev 里,比如:
"require": {
"ext-swoole": "*",
"easyswoole/easyswoole": "^5.0"
}
它的作用是让 composer install 检查当前 PHP 环境是否满足扩展要求。不满足就直接中断,避免后续运行时报致命错误。
- 版本号可以写更具体,比如
"ext-swoole": ">=5.0.0",匹配 Swoole 5.x 起的 API 变化 - 如果项目只是「可选支持」Swoole(比如 CLI 命令能用协程加速,但不用也能跑),就别放
require,改用conflict或运行时extension_loaded('swoole')判断 - 注意:这个字段对 Docker 构建镜像很关键 —— 如果 base image 没装 swoole,
composer install会立刻失败,而不是等到容器启动后才报错
为什么 composer require swoole/swoole 没反应或报错
因为 swoole/swoole 不是一个 Composer 包,它根本不在 Packagist 上。
你搜到的所谓 “swoole/swoole” 仓库,其实是官方 GitHub 项目主页,没有 composer.json,也不发布到 Packagist。试图 composer require swoole/swoole 会报 Could not find a version of package swoole/swoole matching your minimum-stability 或直接 404。
- 真正该装的是框架封装层,比如
easyswoole/easyswoole、hyperf/hyperf,它们会自动检查ext-swoole - IDE 辅助用
swoole/ide-helper是合法的 Composer 包,可以composer require --dev swoole/ide-helper - 别被 GitHub star 数误导 —— Swoole 的核心是 C 扩展,不是 PHP 类库,所有功能都来自
php_swoole.dll或modules/swoole.so
PHP 8.3 + Swoole 5.x 配合 composer 的坑
新版本组合下,最容易栽在扩展编译和配置顺序上。
Swoole 5.0+ 要求 PHP 8.1+,但某些 Linux 发行版默认 PHP 8.3 的 phpize 和头文件路径可能和 Swoole 编译脚本预期不一致,导致 pecl install 后扩展加载失败,composer 校验自然过不去。
- 装之前先确认:
php-config --version和php -v输出一致;不一致说明多 PHP 版本共存,pecl可能调错版本 - macOS 使用 Homebrew 安装 PHP 时,
pecl默认走系统 PHP,得用$(brew --prefix php)/bin/pecl install swoole -
php.ini里要显式开启:加一行extension=swoole(Linux/macOS)或extension=php_swoole.dll(Windows),不能只靠ext/目录自动扫描
扩展没加载成功,composer 就永远卡在依赖校验那步 —— 这点比任何语法错误都隐蔽,也最容易被忽略。










