Workerman 5.2.3 安装提示“权限不足”实为 PHP 扩展未启用或关键函数被禁用:需确保 CLI 模式下启用 pcntl、posix、sockets、openssl 扩展,且 disable_functions 中未屏蔽 shell_exec、exec、putenv、stream_socket_server 等函数;Windows 用户须用 WSL2 或手动编译 pcntl,不可直接运行。

Workerman 5.2.3 安装提示“权限不足”,通常不是指 Linux 文件写入权限,而是 PHP 运行时禁用了关键系统函数或扩展未启用,导致 Composer 下载后无法正常加载、初始化或启动。Workerman 5.2.3 要求 PHP ≥ 8.0,且依赖 pcntl、posix 等扩展——这些在 CLI 模式下必须显式启用,否则会报错“权限不足”“function not found”或启动失败。
检查并启用必需的 PHP 扩展
- 运行以下命令确认扩展是否已加载:
php -m | grep -E "pcntl|posix|sockets|openssl"
- 若缺失,编辑
php.ini(注意是 CLI 模式的配置文件,可用php --ini查看路径),取消注释:extension=pcntl.so extension=posix.so extension=sockets.so
- 重启终端或重新加载环境后,再验证:
php -r "echo function_exists('pcntl_fork') ? 'ok' : 'fail';"
确认 PHP 函数未被禁用
- Workerman 启动需调用
shell_exec、exec、putenv、stream_socket_server等函数。若被disable_functions屏蔽,会表现为“权限不足”或“No such file or directory”等误导性错误。 - 执行:
php -i | grep disable_functions
- 检查输出中是否包含上述函数。如有,需修改
php.ini中的disable_functions行,移除它们(生产环境请谨慎评估安全风险)。
避免 Composer 权限误判场景
- 不要用
sudo composer require ...安装,这会导致 vendor 目录属主为 root,后续 PHP CLI 以普通用户运行时读取失败。 - 正确做法是确保当前用户对项目目录有完全读写权限:
chown -R $USER:$USER /path/to/your/project chmod -R u+rw /path/to/your/project
Windows 用户特别注意
- PHP 官方不提供 Windows 下的
pcntlDLL,Workerman 5.2.3 在 Windows 上默认不可用。 - 解决方案只有两个:
- 使用 WSL2(推荐),安装 Ubuntu + PHP 8.0+ 并启用
pcntl - 或升级到 PHP 8.1+ 后通过
pecl install pcntl手动编译(需 VS 工具链,成功率低,不建议生产使用)
- 使用 WSL2(推荐),安装 Ubuntu + PHP 8.0+ 并启用
验证安装是否真正完成
-
composer require workerman/workerman:^5.2.3成功后,检查:ls vendor/workerman/workerman/ # 应看到 Worker.php、Autoloader.php、start.php 等核心文件
- 若
vendor/autoload.php未自动注册 Workerman 命名空间,可手动补全 autoload 映射:"autoload": { "psr-4": { "Workerman\": "vendor/workerman/workerman/" } }然后执行
composer dump-autoload -o。
不复杂但容易忽略

















