workerman在linux安装失败主因是php缺pcntl/posix扩展或函数被禁用;需运行官方检测脚本确认stream_socket_server、pcntl_fork等状态,升级php至7.4+,启用扩展并清除disable_functions中相关函数,再通过composer安装。

Workerman 在 Linux 上安装失败,八成不是框架问题,而是 PHP 环境缺关键扩展或配置被禁用。直接上手前,先确认 pcntl 和 posix 扩展已启用,否则 Worker::runAll() 会直接报错退出,连进程都起不来。
检查 PHP 环境是否达标
别跳过这步——很多“安装成功但启动报错”的情况,根源都在这里。运行官方检测脚本:
curl -Ss https://www.workerman.net/check | php
重点关注三类输出:
-
stream_socket_server:若提示 disabled,说明disable_functions在php.ini里禁用了该函数,需手动删掉它 -
pcntl_fork/posix_getpid:任一 fail,代表pcntl或posix扩展未装或未启用 - PHP 版本低于 5.4:Workerman 不支持,必须升级(推荐 PHP 7.4+ 或 8.x)
补全必需的 PHP 扩展
CentOS/RHEL 系统常用命令:
yum install php-process php-cli php-devel
然后确认扩展是否加载:
-
pcntl和posix通常是 PHP 编译时内置的,但可能被禁用;检查php.ini中是否有disable_functions = pcntl_fork,pcntl_waitpid,...,删掉整行或至少移除pcntl_*相关函数 - 如需更高并发,再装
libevent:pecl install libevent
,并在php.ini中加extension=libevent.so(注意:必须放在sockets.so之后,否则启动时报undefined symbol: socket_create)
用 Composer 安装 Workerman(推荐)
确保当前用户有写权限,且 Composer 已配置国内镜像(避免超时):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
然后执行:
composer require workerman/workerman
安装后你会看到 vendor/workerman/workerman 目录。别手动下载 ZIP 包解压——Composer 自动处理自动加载,少踩 80% 的路径和命名空间坑。
启动时常见报错及对应动作
运行 php start.php start 后如果卡住、无输出或报错,优先看这几条:
-
PHP Fatal error: Class 'Workerman\Worker' not found→ 检查require_once路径是否指向正确的Autoloader.php,典型错误是写成./Workerman/Autoloader.php但实际在vendor/workerman/workerman/Autoloader.php -
Address already in use→ 端口被占,用lsof -i :2345查进程并kill,别反复start - 启动后立即退出,且无任何日志 → 很可能是
pcntl未启用,php -m | grep pcntl应有输出
真正容易被忽略的是:Workerman 启动后不会自动创建日志文件,所有错误默认输出到终端。调试阶段务必用 php start.php start(不加 -d),而不是直接守护进程化——否则你根本看不到第一行报错。











