直接运行 composer create-project hyperf/hyperf-skeleton 创建骨架后,必须进入项目目录执行 composer require hyperf/http-server,否则 php bin/hyperf.php start 无法监听端口,curl 访问超时;同时路由 prefix 不可带结尾斜杠,否则导致 404。

直接运行 composer create-project hyperf/hyperf-skeleton 即可创建标准骨架,但必须注意后续两步——否则项目根本起不来。
执行命令后必须进目录再装 http-server
骨架默认不带 HTTP 服务组件,php bin/hyperf.php start 启动后会静默监听失败,curl 访问直接超时,netstat -tuln | grep 9501 也看不到端口。
- 进入项目目录:
cd my-api - 手动安装:
composer require hyperf/http-server - 这一步不能省,也没有替代方案
prefix 路由前缀别加结尾斜杠
用 #[AutoController(prefix: '/api')] 是对的,写成 prefix: '/api/' 就会导致所有路由 404。
- Hyperf 的路由匹配逻辑对 trailing slash 敏感
-
/api/index匹配成功,/api//index(实际被解析成这样)就失败 - 其他注解如
#[GetMapping]的path参数同理,不要补尾部/
Windows 下 Docker 启动要确认挂载路径权限
如果在 Windows 上用 docker run -v D:/project:/hyperf-skeleton 挂载后执行 composer create-project 报错 “Permission denied”,大概率是 WSL2 文件系统权限或 Docker Desktop 共享设置没开。
- 打开 Docker Desktop → Settings → Resources → File Sharing,把
D:盘加进去 - 容器内执行前先
chown -R www-data:www-data /hyperf-skeleton - 或者改用
--user root启动容器(开发阶段可接受)
真正容易卡住的地方不是创建命令本身,而是骨架和 HTTP 组件分离这个设计——它让新手第一眼看不到“启动失败”的提示,只看到 curl 超时,然后开始怀疑网络、防火墙、Swoole 版本……其实就差那一个 composer require。











