不能直接用 composer create-project hyperf/hyperf 创建可运行项目,必须使用官方推荐的 hyperf-skeleton 模板:composer create-project hyperf/hyperf-skeleton my-app。

composer create-project 能直接装 Hyperf 吗
不能直接用 composer create-project hyperf/hyperf 得到一个可运行的项目——它会报错或生成空壳,因为 Hyperf 官方不提供开箱即用的 project template。官方推荐的是基于 hyperf-skeleton 模板创建。
实操建议:
- 用
composer create-project hyperf/hyperf-skeleton my-app,这是唯一稳定、被 CI 验证过的入口 - 别手动改
composer.json然后composer install,容易漏掉autoload配置和hyperf/framework的版本约束 - PHP 版本必须 ≥ 8.0(Hyperf v3.x),
composer自身建议 ≥ 2.2,否则可能解析hyperf-skeleton的依赖失败
安装后启动报错 Class 'Hyperf\Contract\ContainerInterface' not found
这说明容器未正确加载,90% 是因为 vendor/autoload.php 没被引入,或 di.php 配置路径错误。Hyperf 不依赖 Laravel 那套自动发现机制,一切从 bin/hyperf.php 入口开始。
实操建议:
- 确认
bin/hyperf.php第一行是require dirname(__DIR__) . '/vendor/autoload.php';,少一个点或路径错都会挂 - 检查
config/autoload/dependencies.php里有没有误删了Hyperf\Contract\ContainerInterface对应的实现绑定 - 运行
php bin/hyperf.php start前先执行composer dump-autoload -o,避免 PSR-4 映射失效
为什么 vendor/hyperf/* 下没看到 src 目录
Hyperf 的包结构是“扁平发布”的:每个组件(如 hyperf/http-server)的源码在自己的仓库里,但 packagist 上发布的版本只含 src/ 和 composer.json,没有 tests 或 examples。你看到的 vendor/hyperf/http-server 就是精简后的运行时代码。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
实操建议:
- 别试图在
vendor里改源码——所有定制必须通过配置、AOP 或继承重写,否则升级时会被覆盖 - 想查某函数实现?直接去 GitHub 搜对应包名,比如
hyperf/validation的验证逻辑不在本地vendor,而在 hyperf/hyperf/src/validation -
composer show hyperf/http-server可看当前安装版本,再比对 GitHub tag,避免文档和本地版本不一致
用 Docker 启动 Hyperf 时 composer install 失败
Docker 构建阶段常因内存不足、国内网络或 PHP 扩展缺失导致 composer install 卡住或报 hyperf/cache 编译失败。这不是 Hyperf 特有,但 Hyperf 的依赖树深(尤其带 amqp、redis 时),更容易暴露问题。
实操建议:
- 基础镜像优先选
php:8.1-cli-slim,别用alpine——缺少g++和make会导致 swoole 编译失败 - 在
Dockerfile中加ENV COMPOSER_MEMORY_LIMIT=-1,防止 OOM kill - 国内环境务必配镜像源:
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 如果只跑 HTTP 服务,
composer install --no-dev --optimize-autoloader能跳过测试相关包,减少失败概率
Hyperf 的安装不是“跑一条命令就完事”,关键在模板选择、入口加载链和 vendor 包的使用边界。最容易被忽略的是:它不兼容 Laravel 风格的“直接 require 某个类”,所有核心接口都必须经 DI 容器解析,哪怕只是写个 demo。










