composer 不安装 swoole 扩展,仅校验 ext-swoole 是否存在;正确安装路径是 pecl install swoole,并确保 php-config 指向目标 php 版本,且 extension=swoole.so 写入 cli 与 fpm 对应的 php.ini。

Composer 不能安装 Swoole 扩展本身,它只校验 ext-swoole 是否存在——你看到的“安装失败”,90% 是 PHP 环境里根本没装好扩展,不是 Composer 的问题。
pecl install swoole 是最稳的安装路径
Linux/macOS 下,pecl install swoole 比源码编译更少出错,它自动适配当前 php-config 路径,避免手动指定 --with-php-config 填错版本。但要注意:
- 运行前先确认
php-config指向你要用的 PHP:比如多版本共存时,/usr/bin/php-config可能对应 PHP 7.4,而你实际用的是 PHP 8.2 - PECL 默认不开启协程 Hook(
--enable-coroutine),如果你项目依赖file_get_contents协程化,得重装:pecl uninstall swoole && pecl install -f swoole --configureoptions enable-coroutine=1 - 若需
--enable-http或--enable-mysqlnd,PECL 不支持动态追加,只能换源码编译
extension=swoole.so 必须出现在正确的 php.ini 里
装完后,php -m | grep swoole 有输出 ≠ 服务能跑。常见断点是 CLI 和 FPM 加载了不同配置文件:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 查 CLI 配置:
php --ini→ 看 “Loaded Configuration File” 路径 - 查 FPM 配置:
php-fpm -i | grep "Loaded Configuration File"(或php -i -c /etc/php/8.2/fpm/php.ini | grep "Loaded Configuration File") - 两个配置文件都得有这行:
extension=swoole.so(Linux/macOS)或extension=php_swoole.dll(Windows) - 改完记得重启:CLI 不用重启,但
php-fpm得systemctl restart php8.2-fpm,Apache 得systemctl restart apache2
"ext-swoole": "*" 在 composer.json 里只起刹车作用
这个字段写在 require 或 require-dev 里,不是为了“装东西”,而是让 composer install 在扩展缺失时立刻报错中断,避免部署后才崩:
- 它不解决任何运行时问题,只是提前暴露环境缺陷
- 如果项目只在 CLI 启动 Swoole 服务(如
Swoole\Http\Server),放require-dev更合理;Web 请求链路一般不直接依赖 Swoole - 别写
"ext-swoole": "*"还加--ignore-platform-req=ext-swoole掩盖问题,那等于关掉刹车再踩油门 - 版本建议写具体点,比如
"ext-swoole": ">=5.0.0",匹配 Swoole 5.x 的 API 变更(如$request->getContent()替代$request::$rawContent)
IDE 补全和运行时是两回事,别混着配
装了扩展、php --ri swoole 显示 enabled,但 VS Code 或 PHPStorm 里 Swoole\Coroutine::create() 没提示?这不是 Composer 没装对,是 IDE 没加载 stub:
- 官方
swoole/ide-helper是 GitHub 仓库,不是 Composer 包;composer require swoole/ide-helper只拉代码,不自动注册 stub - VS Code + Intelephense:把克隆下来的
ide-helper/stubs目录路径填进intelephense.stubs设置项 - PHPStorm:要手动把
stubs/加进Settings → PHP → Stub Path,且 Language Level ≥ 8.0,否则联合类型提示失效 - 别信网上教程说“装了
swoole/swoole就有补全”,那个包早已废弃,2026 年主流项目都不用了
真正卡住人的从来不是命令敲错,而是以为 composer require 成功了就等于 Swoole 能跑——它连 .so 文件的边都没碰到。验证必须落到 php --ri swoole 的输出上,看到明确的 Version 和 enabled,才算过第一关。










