Hyperf项目初始化后无法启动的主因是PHP版本<8.0、Swoole未启用协程或版本<5.0、opcache.enable_cli=1导致静默退出,需执行di:generate生成代理类并安装http-server组件。

直接用 composer create-project 命令就能完成初始化,但有几个关键点不注意,项目建完就起不来。
确认环境基础是否达标
Hyperf 不是“装上就能跑”的黑盒,它依赖 PHP 和 Swoole 的精确版本与配置:
- 运行
php -v确保是 PHP ≥ 8.0(推荐 8.1+),Ubuntu 默认源可能太旧,建议添加 Ondřej PPA 源:sudo add-apt-repository ppa:ondrej/php && sudo apt update - 执行
php --ri swoole,必须看到coroutine => enabled且Version≥ 5.0;若无输出或显示 disabled,说明扩展未加载或版本不足 - 检查
opcache.enable_cli=0是否在php.ini中显式设置——CLI 下开启 opcache 是服务静默退出的高频原因
拉取骨架并安装核心组件
官方骨架默认不含 HTTP 服务器能力,这一步漏掉,start 后根本监听不了任何端口:
- 执行命令创建项目:
composer create-project hyperf/hyperf-skeleton myapp - 进入目录:
cd myapp - 必须手动安装 HTTP 服务组件:
composer require hyperf/http-server - 如果提示 Composer 版本过低(低于 2.5),先升级:
composer self-update
首次启动前的关键操作
不是敲完 start 就万事大吉,有三件事直接影响能否正常响应请求:
- 确保当前用户对项目有完整权限,尤其
runtime/目录可写:sudo chown -R $USER:$USER myapp - 手动触发依赖注入代理类生成:
php bin/hyperf.php di:generate,避免运行时报 “Class not found” - 启动服务:
php bin/hyperf.php start,默认监听127.0.0.1:9501
验证是否真正生效
别只看终端有没有报错,要确认路由和控制器已注册成功:
- 运行
php bin/hyperf.php route:list,输出中应包含类似GET | /index/index | App\Controller\IndexController::index的条目 - 访问
http://127.0.0.1:9501/index/index,返回 JSON 或字符串才算通路建立成功 - 临时重命名
app/Controller/IndexController.php,再 curl 同一地址,若返回 404,说明原路由确实由该文件提供


















