Workerman 5.x 要求 PHP ≥ 8.1,低于则硬性终止启动;需确认 CLI 实际 PHP 版本(非 Web 环境),通过 which php、面板命令或 update-alternatives 切换,并安装对应 -cli 及 pcntl/posix/sockets 扩展,升级后须 composer update 或重装 vendor。

Workerman 报错 PHP version too low 怎么办
Workerman 5.x 要求 PHP ≥ 8.1,低于这个版本会直接终止启动,并抛出 PHP version too low 错误。不是警告,是硬性拦截——不升级 PHP,composer install 都可能失败,更别说运行。
确认当前 PHP 版本和实际运行环境
很多人卡在「明明 php -v 显示是 8.2,但 Workerman 还报低版本」,根本原因是 CLI 和 Web SAPI(如 Apache/Nginx)用的不是同一个 PHP 二进制或配置。Workerman 是命令行程序,只认 php 命令对应的版本。
- 运行
which php看路径,再执行/usr/bin/php -v(把路径替换成你看到的)确认真实版本 - 如果用的是宝塔、AMH 等面板,它们常自带多 PHP 版本管理,CLI 默认可能仍是旧版,需手动切换:
bt default php 81或类似命令(查面板文档) - Ubuntu/Debian 用户容易忽略
update-alternatives --config php,它控制系统级php命令指向 - Mac 上用 Homebrew 安装了多个 PHP?检查
brew unlink php@8.0 && brew link php@8.1
Linux 下安全升级 PHP 到 8.1+ 的实操要点
别直接 apt upgrade php —— Ubuntu 20.04 默认源最高只到 PHP 7.4,22.04 才带 8.1;CentOS 7 源里根本没有 PHP 8.x。必须换源或编译安装,但编译太重,推荐包管理方式。
- Ubuntu 20.04:加
ondrej/phpPPA 源(官方维护),再apt install php8.1-cli php8.1-mbstring php8.1-openssl php8.1-zip,注意装-cli后缀包 - CentOS 7:启用
remi-php81仓库(yum install epel-release && yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm),再yum install php81 php81-php-cli php81-php-mbstring,然后用php81 --version测试,再用alternatives --set php /opt/remi/php81/root/usr/bin/php切换默认 - 所有系统都必须装 Workerman 依赖扩展:
pcntl、posix、sockets—— 它们通常随主包安装,但某些精简镜像要手动开,比如 Alpine 需apk add php81-pcntl php81-posix
升级后仍报错的三个隐蔽原因
PHP 版本对了,Workerman 还启动失败?大概率是 Composer 或缓存没同步。
立即学习“PHP免费学习笔记(深入)”;
-
composer update必须重跑 —— Workerman 5.x 的composer.json有"php": "^8.1"约束,旧 lock 文件可能锁着 4.x 版本 -
composer clear-cache+ 删除项目下的vendor目录再composer install,避免 autoload 加载了旧版类 - 某些 IDE(如 PhpStorm)内置终端会缓存 PATH,重启终端或 IDE 才能读到新
php路径
Workerman 对 PHP 版本的检测发生在 Worker::checkSapi 里,一行代码就决定生死。它不看配置文件,不看环境变量,只信 PHP_VERSION_ID。所以版本问题从来不是“差不多就行”,而是“差一位就不行”。











