Laravel Reverb安装失败主因是PHP版本<8.2、OpenSSL未启用或Laravel版本不兼容(需10.42+或11.x);须升级框架、启用扩展、发布配置、设置独立32字节REVERB_APP_KEY并直连端口启动服务。

Composer安装Laravel Reverb失败的常见原因
直接运行 composer require laravel/reverb 大概率报错,核心原因是 Laravel Reverb 要求 PHP ≥ 8.2、OpenSSL 扩展启用、且必须使用 Laravel 11(或 10.42+)——它不兼容 Laravel 10.0–10.41 或更早版本。
常见错误现象包括:
-
laravel/reverb v1.0.0 requires laravel/framework ^11.0(但你用的是 10.x) -
ext-openssl is missing(尤其在 Alpine 容器或某些 macOS Homebrew PHP 环境中) -
Class "Laravel\Reverb\Http\Middleware\EnsureReverbIsRunning" not found(因自动发现未触发或服务提供者未注册)
正确安装步骤与必要配置
确认环境达标后,按顺序执行以下操作,跳过任意一步都可能引发后续问题:
- 升级 Laravel 到 10.42+ 或 11.x:
composer update laravel/framework(注意检查composer.json中的版本约束) - 确保 OpenSSL 已启用:
php -m | grep openssl,若无输出需重装 PHP 或启用扩展 - 运行安装命令:
composer require laravel/reverb - 发布配置:
php artisan vendor:publish --tag=reverb-config(这会生成config/reverb.php) - 设置
REVERB_APP_KEY和REVERB_HOST到.env,例如:REVERB_APP_KEY=your-32-byte-key-hereREVERB_HOST=localhost
注意:Laravel Reverb 不依赖 php artisan serve,它自带独立进程,所以不能靠 php artisan serve 启动 WebSocket 服务。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
启动 Reverb 服务时的关键命令与陷阱
安装完成后,必须手动启动 Reverb 进程,否则前端连接会直接超时或返回 404。
- 开发环境启动:
php artisan reverb:start(会监听localhost:8080,默认不后台运行) - 如需后台运行(例如配合 Supervisor),加
--daemon参数:php artisan reverb:start --daemon - 别用
php artisan serve代理 WebSocket 请求——浏览器 WebSocket 连接地址必须直连 Reverb 的端口(如ws://localhost:8080/app/your-key),不能走 Laravel HTTP 服务 - 如果用 Nginx 反向代理,需显式开启 WebSocket 支持(
Upgrade和Connection头转发),否则握手失败
Laravel Reverb 与 Pusher/Soketi 的关键区别
很多人误以为 Reverb 是“另一个 Pusher 替代品”,其实它定位更轻:只做基础 WebSocket 服务器 + Laravel 集成,不提供 Dashboard、消息持久化、集群管理等能力。
- 不内置消息历史或离线推送——
broadcast()发出即结束,无存储 - 不支持多服务器广播(即无 Redis Pub/Sub 自动桥接),集群部署需额外配
redis并启用reverb:cluster命令 -
REVERB_HOST必须和前端createClient()中的host严格一致,否则跨域或连接拒绝(特别是本地开发时填127.0.0.1却用localhost访问) - 调试时优先看
php artisan reverb:start --verbose输出,而不是浏览器控制台——很多连接失败实际是服务端 TLS/证书或防火墙拦截,前端只显示net::ERR_CONNECTION_REFUSED
最易被忽略的一点:Reverb 的 app.key 必须和 Laravel 应用的 APP_KEY 分开管理,REVERB_APP_KEY 是用于签名 WebSocket 连接请求的独立密钥,长度必须为 32 字节,不能复用 APP_KEY。

















