workerman运行检测脚本出现fail项说明php环境缺失关键扩展或函数被禁用,需立即补全pcntl、posix扩展及解除stream_socket_server等禁用函数限制,否则无法启动或高并发崩溃。

Workerman安装后运行检测脚本发现部分项显示失败而非全部ok,说明PHP环境缺失关键扩展或配置被禁用,必须逐项定位并补全,否则WorkerMan无法正常启动或高并发下会崩溃。
先运行环境检测脚本确认问题项
在终端执行:curl -Ss http://www.workerman.net/check.php | php
脚本输出中只要有一行不是 OK,就代表对应功能不可用。重点关注标红的 FAIL 行,例如:Function pcntl_fork FAIL、Function stream_socket_server FAIL、Extension posix FAIL 等——这些就是你要立刻处理的硬性缺口。
补全 pcntl 和 posix 扩展(宝塔用户专用)
方法一:解注释 + 重载配置(适用于绝大多数宝塔 PHP 版本)
进宝塔 → 软件商店 → 找到你项目所用的 PHP 版本(如 PHP 8.0)→ 点“设置” → “配置文件”,打开 /www/server/php/80/etc/php.ini
搜索 extension=pcntl,删掉该行开头的分号 ;;同样处理 extension=posix 这一行
【必须点“重载配置”或“重启PHP服务”,只保存文件不生效】
验证是否成功:终端执行 /www/server/php/80/bin/php -m | grep -E "pcntl|posix",若两词均出现在输出中,说明已加载
方法二:手动指定 pcntl.so 路径(当 php -m 仍不显示 pcntl 时启用)
先确认 CLI 模式实际读取的 php.ini:/www/server/php/80/bin/php --ini,记下 Loaded Configuration File 路径
再检查扩展目录是否存在 pcntl.so:ls /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/ | grep pcntl
如果不存在,需进入 PHP 源码 ext/pcntl 目录,依次执行:/www/server/php/80/bin/phpize → ./configure --with-php-config=/www/server/php/80/bin/php-config → make && make install
命令成功后会输出扩展安装路径,复制该路径,在 php.ini 中写成完整形式:extension=/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/pcntl.so
解除 disable_functions 限制
若检测脚本提示 Function stream_socket_server may be disabled,说明该函数被禁用
第一步:运行 php --ini 查明 CLI 模式使用的 php.ini 文件路径
第二步:用 vim 或宝塔编辑器打开该 php.ini,搜索 disable_functions 项
第三步:删除其中的 stream_socket_server,如有多个函数用逗号分隔,删完确保格式仍为逗号分隔且无多余空格
第四步:保存后执行 /www/server/php/80/bin/php -i | grep disable_functions,确认输出中不再包含该函数名
补装 event 或 libevent 扩展(仅当并发 >1024 时必需)
event 扩展性能优于 libevent,优先装 event
Ubuntu/Debian 系统执行:sudo apt-get update && sudo apt-get install php-dev libevent-dev → sudo pecl install event → 提示输入 libevent 路径时直接回车(自动探测)→ 安装完成后按提示写入 extension=event.so 到 php.ini 的 extension 区域
CentOS/RHEL 系统执行:yum install php-devel libevent-devel → pecl install event → 同样回车确认路径 → 添加 extension=event.so
验证:php -m | grep event 有输出即成功











