workerman启动本质是执行入口脚本(如start.php),需确保其存在、正确加载autoloader或vendor/autoload.php,且通过php start.php start(前台)或php start.php start -d(后台)运行;启动前须确认php≥7.4、pcntl与sockets扩展启用、关键函数未被禁用。

Workerman安装完成后,启动本质就是执行你的入口脚本(比如 start.php),而不是运行 composer install 或解压完就自动跑起来——它不会自己注册为系统服务,也不会监听端口,一切取决于你是否正确执行了 CLI 命令。
确认入口文件和依赖路径是否就位
常见失败不是“启动命令错”,而是脚本根本没准备好:
-
start.php必须存在,且开头有require_once加载 Workerman 自动加载器(如Workerman/Autoloader.php)或 Composer 的vendor/autoload.php; - 如果用
composer require workerman/workerman安装,必须确保vendor/目录已生成(执行过composer install或composer dump-autoload); - 若手动下载 zip 包,需解压后把
Workerman/目录放到项目能require_once到的位置,并检查路径拼写(大小写敏感,尤其 Linux); - 错误示例:
require_once 'vendor/autoload.php'但当前目录下没有vendor,就会报failed to open stream。
用 php 命令直接执行 start.php 启动
Workerman 只依赖 PHP-CLI 环境,不走 Web 服务器。所有操作都在终端完成:
- 前台调试模式(开发首选):
php start.php start—— 输出实时打印到终端,Ctrl+C即停; - 后台守护进程模式(生产必需):
php start.php start -d—— 进程转入后台,关闭终端也不影响; - 别加错参数:比如
php start.php start --daemon是无效的,Workerman 只认-d; - Windows 下必须用
-d启动(单进程限制),且不能用sudo或管理员权限强行 fork; - 如果提示
Command 'php' not found,说明没配好 PHP CLI 路径,先运行which php或php -v确认。
启动失败时最该先查的三件事
90% 的“启动不了”问题集中在这三项,比翻日志还快:
-
php -v输出版本是否 ≥ 7.4?Workerman v5+ 强制要求 PHP ≥ 7.4(需 fiber 支持),5.6/7.1 会静默失败; -
php -m | grep -E "pcntl|sockets"是否同时输出pcntl和sockets?缺一不可,ZTS 模式(thread safety enabled)会导致pcntl_fork()崩溃; -
php -i | grep disable_functions里有没有stream_socket_server、pcntl_fork?有就得改php.ini,删掉或注释整行disable_functions。
真正卡住的地方往往不是命令本身,而是入口文件里的 new Worker('tcp://0.0.0.0:2345') 写成了 127.0.0.1,或是防火墙拦了端口却误以为是 Workerman 没启动——建议先用 ss -tuln | grep :2345 看端口是否真在监听,再决定下一步查哪。











