Workerman 5.2.3 可在 Windows 下安装运行,但仅支持单进程调试模式,不适用于生产环境;需 PHP 7.4–8.1、启用 sockets/openssl 扩展,自动降级并提示 pcntl 不支持。

Workerman 5.2.3 可以在 Windows 环境安装并运行,但需明确一个关键前提:它只能以单进程、调试模式运行,无法启用多进程(pcntl 扩展在 Windows 下不可用),因此不适用于生产环境。如果你只是本地开发、功能验证或学习长连接原理,Windows 是可行的;若要上线或压测,请务必切换到 Linux。
✅ 正确安装步骤(Windows)
-
确认 PHP 环境已就绪
- PHP 版本建议为 7.4–8.1(5.2.3 对 PHP 8.2+ 兼容性尚未完全稳定)
- 必须启用扩展:
sockets(Workerman 依赖)、openssl(WSS/HTTPS 需要)⚠️
pcntl和posix在 Windows 下不可用,Workerman 会自动降级为单进程模式,启动时控制台会提示Warning: pcntl is not supported on Windows
直播间话术巡检-windows下载直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
-
通过 Composer 安装 Workerman
在项目根目录执行:composer require workerman/workerman:5.2.3
✅ 注意指定版本号
:5.2.3,避免拉取最新版(如 5.3.x)导致兼容问题 -
创建一个简单的 WebSocket 服务示例(
start.php)<?php require_once __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; $ws_worker = new Worker('websocket://0.0.0.0:2346'); $ws_worker->count = 1; // Windows 只能设为 1 $ws_worker->onMessage = function ($connection, $data) { $connection->send('Hello from Workerman 5.2.3 on Windows!'); }; Worker::runAll(); -
启动服务
命令行执行:php start.php start
- 若看到
Workerman start success...和press Ctrl+C to stop,说明启动成功 - 浏览器访问
ws://127.0.0.1:2346(配合前端 WebSocket 连接测试)即可验证
- 若看到
⚠️ Windows 下常见问题与绕过方式
报错
pcntl_fork() is not supported on Windows
→ 属于预期行为,无需处理。Workerman 自动忽略多进程逻辑,继续单进程运行。php start.php start无反应或闪退
→ 检查是否在 CMD/PowerShell 中以管理员权限运行(部分端口如 80/443 需要);更推荐用php start.php start -d后台守护模式(Windows 支持-d,但本质仍是前台进程,关闭窗口即终止)。-
想让服务开机自启或后台常驻?
Windows 没有 Supervisor,可用以下任一方式模拟:- 用
windows-task-scheduler设置开机启动脚本(调用php start.php start -d) - 封装为 Windows 服务(借助
winsw工具,需额外配置 XML 描述文件) - 更简单:用
nohup类似思路不适用,改用start /B php start.php start -d >nul 2>&1启动后脱离控制台
- 用
? 补充提醒
- 不要尝试在 Windows 上配置
Redis Pub/Sub或集群路由——这些依赖稳定长连接和进程间通信,在单进程下意义有限,且 Redis 连接在 Windows 下偶发超时,建议开发阶段用内存数组模拟路由逻辑。 - 前端调试推荐用 LayIM 或原生 WebSocket + Chrome 控制台,避免依赖复杂 UI 框架增加排障难度。
- 所有数据库操作、用户鉴权等业务逻辑,仍可复用 ThinkPHP 或 Laravel 的 Model/Service,Workerman 进程中
require引入即可(注意自动加载路径)。
基本上就这些。

















