workerman 5.x 强制要求 php ≥ 8.1,低于则硬性终止启动并报“php version too low”;php 8.1–8.3 可用但需启用 pcntl、安装 event 扩展及调优 tcp 参数,php 7.4 才是实际生产中最稳的分水岭。

Workerman 5.x 要求 PHP ≥ 8.1,低于就直接报 PHP version too low 并终止启动;PHP 8.1–8.3 可用但需手动调优,PHP 7.4 才是实际生产中最稳的分水岭。
Workerman 5.x 强制要求 PHP 8.1+
不是“建议”,而是硬性拦截:composer install 阶段就可能失败,php start.php start 会立刻退出并打印错误。常见误判点:
-
php -v 显示 8.2,但
which php指向旧版二进制(比如宝塔面板默认 CLI 仍用 PHP 7.4) - Ubuntu 20.04 官方源无 PHP 8.1,必须加 ondrej/php PPA 源再装
php8.1-cli包 - CentOS 7 需启用 remi-php81 仓库,并用
alternatives --set php切换系统级命令 - 升级后必须重跑
composer update,否则 lock 文件可能锁着 Workerman 4.x
PHP 8.0+ 启动失败大概率是 pcntl 被禁用
Workerman 依赖 pcntl_fork、pcntl_waitpid、pcntl_signal 等函数,PHP 8.0+ 默认在 disable_functions 中全禁——这不是 Bug,是安全策略收紧。
- 查 CLI 实际生效的 php.ini:
/usr/bin/php -i | grep "Loaded Configuration File"(路径按which php结果替换) - 编辑该 php.ini,删掉或注释掉
pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_exec, pcntl_signal, pcntl_alarm - 改完别忘了重启终端或
source /etc/profile,否则 shell 还缓存着旧 PATH - 验证是否生效:
/usr/bin/php -m | grep pcntl(不是php -m)
PHP 8.2/8.3 下性能不升反降?缺 event 扩展 + TCP 参数没调
没装 event 扩展时,Workerman 会退化为 select() 轮询,高并发下 CPU 疯涨但 QPS 卡在 1w–1.5w;PHP 7.4 + event 能到 2.3w+。
- 确认已装:
php -m | grep event,没输出就pecl install event(需先装 libevent-dev) - 检查内核参数:
cat /proc/sys/net/core/somaxconn,必须 ≥ 65535,否则新连接堆积在 SYN_QUEUE - 避免在
onMessage里写阻塞调用,PHP 8 对file_get_contents或无 timeout 的 cURL 更敏感,容易拖垮整个进程
真正卡住上线的从来不是版本号,而是 CLI 和 Web 两套 PHP 环境混用、disable_functions 黑名单跨版本膨胀、扩展缺失却无明确报错——这些细节不逐个验证,光看“支持 PHP 8”四个字,服务跑起来也撑不过三天。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











