Workerman能否运行取决于PHP CLI版本≥5.3.3(推荐≥7.4)、pcntl扩展和posix扩展三者必须同时满足;缺一则启动失败或reload失效,Linux/macOS尤其依赖后两者,Windows除外。

Workerman 能否跑起来,不取决于你装了多少包,而取决于三个硬性条件是否全部满足:PHP CLI 版本、pcntl 扩展、posix 扩展。缺一不可,少一个就启动失败或 reload 失效。
PHP CLI 版本必须 ≥5.3.3(推荐 ≥7.4)
Workerman 运行在 PHP 命令行模式下,php -v 显示的版本必须 ≥5.3.3。但注意:
- Windows 用户可用
php -v直接查,只要 ≥5.3.3 就行(Windows 版不依赖 pcntl/posix) - Linux/macOS 用户必须用
php -v查 CLI 版本,不是phpinfo()里的 Web 版本 —— 两者可能不同 - 生产环境强烈建议 ≥7.4(2026 年主流),PHP 8.1+ 更稳;低于 7.4 的版本已无安全更新
Linux/macOS 必须启用 pcntl 和 posix 扩展
这两个扩展是 Linux 下 fork 子进程、信号处理、进程控制的基础。缺失任一,会出现:
PHP Warning: pcntl_fork() has been disabled for security reasons- 服务启动后立刻退出,或
php start.php restart无响应 - 日志里反复出现
kill failed或signal handler not installed
验证方式:php -m | grep -E '^(pcntl|posix)$' —— 必须同时输出两行。若缺失:
- CentOS/RHEL:
yum install php-process(多数情况够用) - Debian/Ubuntu:
apt-get install php-cli php-dev php-pear,再手动编译安装(官方未提供现成包) - 源码编译 PHP 的用户:configure 时需加
--enable-pcntl --enable-posix
并发高时建议补 event 扩展(非必需但关键)
当连接数经常 >1024,原生 PHP 的 select 模型会严重拖慢性能,event 扩展可切换到更高效的 libevent 后端。
- 安装前确认:
pecl install event要求 PHP ≥5.4,且需先装系统级依赖(如libevent-dev) - 安装后在
php.ini加extension=event.so,然后php -m | grep event验证 - 注意:
event不是libevent—— 后者是 C 库,前者才是 PHP 扩展;别混淆extension=libevent.so(错误) - Workerman 官方检测脚本
curl -Ss http://www.workerman.net/check.php | php不检查event,得自己补测
最容易被忽略的是:即使所有扩展都装了,ulimit -n 默认值若仍是 1024,连接数一过千就会报 Too many open files —— 这个限制不在 PHP 层,而在系统 shell 级别,必须单独调高。

















