Webman启动失败主因是PHP缺失pcntl/posix扩展或proc_open等函数被禁用;需通过apt/dnf安装对应扩展、检查php.ini启用extension、清除disable_functions中关键函数,并用php -m和php -i验证生效。

Webman 启动失败,90% 是因为 PHP 缺少 pcntl 或 posix 扩展,或者 proc_open 等函数被禁用——不是版本不够高,而是关键能力没开。
Webman 2.2.0版本强化了 TCP/UDP 服务支持,优化路由组管理,并增强异步任务处理能力。结合协程与连接池技术,Webman 能轻松应对高并发场景,适用于网站、接口服务、即时通讯、物联网及游戏开发,兼具高性能、灵活扩展与稳定可靠,是多场景 PHP 服务开发的理想选择。
php -m 里看不到 pcntl 和 posix 怎么办
pcntl 和 posix 不是默认启用的扩展,尤其在宝塔、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_openpcntl_forkpcntl_waitputenvshell_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/ 等结构,直接启动就报错。
- 正确命令是:
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 目录
服务启动了但访问 https://www.php.cn/link/2c1f2f79c163b83cb5dc3fff80c6db73 无响应
Webman 默认监听0.0.0.0:8787,如果本地防火墙、SELinux 或 Docker 网络隔离开了端口,就会“启动成功却打不开”。
- 先确认进程真在跑:
ps aux | grep start.php或php start.php status - 检查监听地址是否被改写:打开
start.php,找到$worker->listen('<a href="https://www.php.cn/link/5c5a7db30feea91f26fc4519b1b0e3e6">https://www.php.cn/link/5c5a7db30feea91f26fc4519b1b0e3e6</a>')这行,开发阶段建议显式改成'<a href="https://www.php.cn/link/2c1f2f79c163b83cb5dc3fff80c6db73">https://www.php.cn/link/2c1f2f79c163b83cb5dc3fff80c6db73</a>' - Linux 上检查端口占用:
lsof -i :8787或netstat -tuln | grep :8787 - Windows 用户注意:CMD 中不要双击
start.php,要用php start.php start命令行方式运行,否则窗口一闪而逝
真正的难点不在“怎么装”,而在“哪个环节悄悄失效了”——比如宝塔里点了 PHP 安装,却没点编译;比如 php.ini 改了两份,只改对了一处;比如 composer install 成功了,但 vendor/autoload.php 权限是只读的。这些细节不验证,光看“启动成功”四个字,就容易以为万事大吉。


















