Webman启动失败主因是pcntl或posix扩展未启用,或proc_open、pcntl_fork等函数被disable_functions禁用;需验证PHP≥7.4、php -m含两扩展、php -i中disable_functions不包含关键函数。

Webman 启动失败,八成不是 PHP 版本低,而是 pcntl 或 posix 扩展没加载,或者 proc_open、pcntl_fork 被 disable_functions 拦住了——这些才是真卡点。
php -m 里看不到 pcntl 和 posix 怎么办
这两个扩展不是 PHP 默认启用的,尤其在宝塔极速安装、Docker 官方镜像或系统包管理安装的 PHP 中常被跳过。光有 PHP 8.2 不代表能跑 Webman。
- Ubuntu/Debian 用户执行:
sudo apt install php8.2-cli php8.2-pcntl php8.2-posix(注意不是php8.2-dev) - CentOS/RHEL 用户执行:
sudo dnf install php-pcntl php-posix,若提示找不到,先启用 EPEL 或 Remi 仓库 - 宝塔用户必须选「编译安装」PHP,极速安装不会编译这两个模块
- 验证是否生效:
php -m | grep -E 'pcntl|posix',输出为空就还没加载成功 - 若已安装但不显示,检查
php.ini是否有extension=pcntl.so和extension=posix.so,没有就手动加一行
start.php 启动报错 “proc_open is disabled”
这个错误说明 PHP 的 disable_functions 列表锁死了 Webman 必须调用的底层函数。proc_open 只是第一个撞上的,后面还有 pcntl_fork、putenv、shell_exec 等。
- 查当前生效配置:
php --ini→ 看 “Loaded Configuration File” 路径 - 编辑该
php.ini,找到disable_functions =行,删掉其中的:proc_open,pcntl_fork,pcntl_wait,putenv,shell_exec,exec - 保存后执行:
php -i | grep disable_functions,确认输出为空或不再包含上述函数名 - 重启 CLI 环境(比如新开终端),再试
php start.php start
composer create-project 执行失败或卡住
Webman 不能用 composer require workerman/webman 引入,必须用 create-project 生成完整骨架,否则缺 start.php、config/、app/ 等结构,直接启动就报 Class 'Webman\App' not found。
立即学习“PHP免费学习笔记(深入)”;
- 正确命令是:
composer create-project workerman/webman myapp(myapp是目录名,别漏空格) - 如果因网络慢失败,可加
-vvv查看卡在哪一步;常见是 GitHub API 限流或 DNS 解析失败 - 替代方案:去 GitHub Releases 下载最新
webman-x.x.x.zip(不是 Source code),解压后进目录运行composer install - 注意:下载 zip 包后必须手动执行
composer install,它不带vendor目录
php start.php start 启动后秒退没报错
终端没报错只闪一下就消失,大概率是进程 fork 失败——不是代码问题,是环境拦住了。
- 先加
-d参数前台运行:php start.php start -d,强制显示完整错误栈 - 检查
runtime/目录权限:ls -ld runtime,确保当前用户有读写权;Windows 检查文件夹属性是否勾选了“只读” - 确认
config/server.php中'pid_file'和'log_file'路径指向runtime/且路径存在、可写 - 执行
php start.php check,它会自动检测扩展、函数、目录权限三项关键项
最常被忽略的是:Webman 不依赖传统 Web 服务器(如 Apache/Nginx)来启动服务,但它极度依赖 PHP CLI 环境的完整性——哪怕只漏掉一个 pcntl_fork,整个进程树就起不来。



















