hyperf 不能用 composer create-project 直接安装成功,因官方已不推荐该方式;主因是 hyperf-skeleton 要求 php ≥ 8.1、强制依赖 swoole 等扩展,且 dev 依赖易引发冲突。

Hyperf 不能用 composer create-project 直接安装成功——不是命令写错了,是官方早就不推荐这么干了。
为什么 composer create-project hyperf/hyperf-skeleton 常失败
这不是网络或权限问题,而是 hyperf-skeleton 的 composer.json 默认要求 PHP >= 8.1,且锁定了大量扩展版本(比如 ext-swoole、ext-redis)。本地 PHP 版本低、没装 Swoole 扩展、或已存在冲突的全局依赖时,composer install 会卡在依赖解析阶段,报错类似:Your requirements could not be resolved to an installable set of packages.
- 检查 PHP 版本:
php -v,必须 ≥ 8.1(Hyperf v3.x 要求) - 确认 Swoole 已启用:
php -m | grep swoole,没输出就得先装ext-swoole - 避免全局
hirak/prestissimo或旧版composer-plugin-api干扰,可临时禁用:composer global disable
推荐做法:用 composer create-project + 手动清理
官方骨架(hyperf-skeleton)本身没问题,但得“轻装上阵”启动。关键是跳过默认的 dev 依赖和测试工具链,减少冲突面。
- 运行:
composer create-project hyperf/hyperf-skeleton project-name --no-dev --prefer-dist - 进项目后删掉
docker/和test/目录(它们带一堆 require-dev 依赖) - 改
composer.json中的"minimum-stability"为"stable",避免自动拉dev-main分支导致兼容问题 - 再执行一次
composer install,这次成功率高很多
如果只是想跑个 Demo,别碰 skeleton
新手最容易卡在“还没写代码,先被配置搞崩溃”。真想快速验证 Hyperf 是否能跑起来,直接用最小化方式:
- 新建空目录,
composer init初始化最简composer.json -
composer require hyperf/http-server hyperf/json-rpc(只装核心组件) - 手动建
server.php,内容就三行:<?php require_once 'vendor/autoload.php'; (new Hyperf\Contract\ApplicationInterface())->run(); - 启动:
php server.php start
这样绕开骨架里所有预设结构和中间件,出问题也容易定位到哪一行。
Windows 下 ext-swoole 是最大拦路虎
Composer 装完,php bin/hyperf.php start 报 Class 'Swoole\Http\Server' not found?不是没装,是 Windows 官方不支持 Swoole 扩展(仅限 WSL2 或 Docker)。这时候别硬刚:
- 别试
pecl install swoole—— Windows 上基本无效 - 别下第三方编译好的
php_swoole.dll—— 版本稍有不匹配就 Segfault - 正确路径:用 WSL2(Ubuntu),或直接切 Docker:
docker run --rm -v $(pwd):/app -w /app -p 9501:9501 php:8.2-cli composer require hyperf/hyperf-skeleton && cd /app && php ./bin/hyperf.php start
Hyperf 的本质是 Swoole 应用,没 Swoole 就没 Hyperf。这点没法妥协,也没隐藏技巧。











