Ratchet 已停止维护,Composer 安装 ratchet/ratchet 会失败或引发严重兼容问题(PHP 8+、ReactPHP v1.0+、symfony/event-dispatcher v6+ 等均不兼容),新项目不应使用。

直接说结论:Ratchet 已停止维护,Composer 安装 ratchet/ratchet 会失败或引入严重兼容问题(PHP 8+、ReactPHP v1.0+、symfony/event-dispatcher v6+ 等均不兼容),不建议新项目使用。
为什么 composer require ratchet/ratchet 现在大概率报错
Ratchet 最后一个稳定版是 v0.4.4(2020 年发布),依赖已过时的 react/react v0.4–v0.7、guzzlehttp/streams(已废弃)、cboden/ratchet 命名空间与新版 PSR-14/PSR-15 冲突。Composer 会因依赖冲突拒绝安装,典型错误包括:
Conclusion: don't install ratchet/ratchet v0.4.4-
Root composer.json requires ratchet/ratchet ^0.4.4 -> satisfiable by ratchet/ratchet[v0.4.4]+but these conflict with your requirements - PHP 8.1+ 下
ext-libevent扩展缺失导致React\EventLoop\ExtEventLoop类找不到
替代方案:用 textalk/websocket 或 amphp/websocket-server 快速启动 WebSocket 服务
如果只是需要轻量、可运行的 WebSocket 服务(如实时日志推送、简单聊天原型),推荐以下两个现代、活跃维护的选项:
-
textalk/websocket:纯 PHP 实现,无扩展依赖,适合开发/测试环境。安装命令:composer require textalk/websocket。启动服务只需几行代码,监听ws://localhost:8000,支持onOpen/onMessage回调。 -
amphp/websocket-server:基于 Amp 异步生态,性能更好,支持 TLS、多 worker、连接限流。安装:composer require amphp/websocket-server amphp/byte-stream。需 PHP 8.0+,启动时用Amp\Socket\Server绑定端口,WebSocket 协议由Websocket\Server自动处理。
两者都不需要 ext-event 或 ext-libevent,避免了 Ratchet 的扩展绑架问题。
如果必须跑旧 Ratchet 代码(如遗留系统)
只能降级环境并锁定依赖:
- PHP 版本限制在
7.4(最高兼容到7.4.33) - 在
composer.json中强制指定旧版 React:"react/react": "v0.7.3"、"evenement/evenement": "v2.0.0"、"guzzlehttp/streams": "3.7.0" - 禁用 Composer 依赖自动升级:
"minimum-stability": "stable"+"prefer-stable": true,否则composer update会破坏兼容链 - 启动脚本必须用
php -S配合React\Http\Server中间件,不能直接执行vendor/bin/ratchet(该命令早已失效)
真正麻烦的不是安装命令,而是 Ratchet 把协议解析、事件循环、HTTP 升级全耦合在一起——现在没人再这么写了。用 amphp 或 swoole 搭建 WebSocket,逻辑更清晰,出问题也容易定位。










