mac安装workerman核心难点是启用pcntl和posix扩展:系统php默认禁用,需用brew install php替换;验证用php -m | grep -e "pcntl|posix";推荐搭配webman框架并安装event扩展提升并发性能。

Mac 上安装 Workerman 的核心难点不在框架本身,而在于 PHP CLI 环境是否满足要求 —— 尤其是 pcntl 和 posix 扩展必须启用,否则 php start.php start 会直接报错退出,连进程都起不来。
pcntl 和 posix 扩展缺失导致启动失败
Mac 自带 PHP(如 macOS Sonoma 附带 PHP 8.3),但默认禁用 pcntl(用于多进程)和 posix(用于系统调用),这两个是 Workerman 运行的硬性依赖。
常见错误现象:
- 执行
php start.php start后立即退出,终端无任何日志 - 报错类似
Call to undefined function pcntl_fork()或Call to undefined function posix_getpid() -
php -m | grep pcntl返回空
解决办法:
- 先确认当前 CLI 使用的 PHP:运行
which php和php --ini,重点看 “Loaded Configuration File” - 若用的是系统自带 PHP,
pcntl无法动态加载(编译时禁用),必须换 PHP 版本 - 推荐用
brew install php安装 Homebrew 版 PHP(自动启用pcntl、posix) - 验证:执行
php -m | grep -E "pcntl|posix",应有两行输出
安装 Webman(Workerman 官方推荐项目结构)
Webman 是基于 Workerman 的现代 PHP 框架,比裸用 Workerman 更稳妥,也规避了手动配置 Worker 类的常见误配。
操作步骤:
- 确保已安装
composer(composer --version可查) - 运行命令创建项目:
composer create-project workerman/webman:~2.0 myapp --no-interaction - 进入目录:
cd myapp - 启动调试模式:
php start.php start(终端保持打开,适合开发) - 访问
@#@#@#@#@#@#@#@#@#@0看到欢迎页即成功
注意点:
- 不要用
sudo运行start.php,会导致权限混乱和event扩展加载失败 - 如果提示
command not found: composer,说明 Composer 未加入 PATH,重新安装或执行~/.composer/vendor/bin/composer
event 扩展不是必须,但影响并发能力
Workerman 在无 event 扩展时走 PHP 原生 stream_select,单机扛不住 1000+ 连接;装了 event(基于 libevent)后,连接数可轻松破万。
Mac 安装步骤:
- 先装依赖:
brew install libevent - 再装扩展:
pecl install event - 提示
Include libevent OpenSSL support [yes]时输no(避免与系统 OpenSSL 冲突) - 编辑
php.ini(由php --ini输出路径确定),末尾加一行:extension=event.so - 重启终端后验证:
php -m | grep event
性能差异明显:实测 5000 并发 WebSocket 连接下,未装 event 时 CPU 持续 95%+,装完后稳定在 30% 左右。
Mac 安装 Workerman 最容易被忽略的其实是 PHP CLI 的“身份”——你以为在用 brew 装的 PHP,实际可能被 shell alias、zsh config 或 IDE 绑定到了系统 PHP。务必每次用 which php 和 php -v 双重确认。扩展装对了,PHP 用错了,照样启动失败。











