核心是提前准备vendor+lock+PHP环境三者闭环;需在同版本PHP/扩展联网机create-project并install,离线机校验环境后解压、COMPOSER_DISABLE_NETWORK=1安装、dump-autoload -o重建自动加载,再用systemd守护启动。

在 Linux 上用 Composer 离线包快速搭建 Hyperf,核心不是“跳过网络”,而是**提前准备 + 严格隔离 + 精准执行**。Hyperf 本身不提供离线安装包,必须靠 vendor 目录 + composer.lock + 正确的 PHP 环境三者闭环。以下步骤已在 Ubuntu 22.04 / PHP 8.1 / Swoole 5.1 环境验证通过。
一、离线前:在联网机完成全部依赖固化
这一步必须在与目标服务器相同 PHP 版本(≥8.0)、相同扩展(ext-swoole、ext-openssl、ext-zip、ext-mbstring)的机器上操作:
- 执行
composer create-project hyperf/hyperf-skeleton myapp --no-interaction,生成完整项目 - 进入
myapp目录,运行composer install --no-dev -o,确保vendor/全量生成且无警告 - 检查
composer.lock中所有包类型为dist(非source),避免含 Git 分支或 dev 版本 - 打包整个目录:
tar -czf hyperf-offline.tgz myapp/,同时校验 md5 或 sha256
二、离线机:环境准备与基础校验
目标服务器无需 Composer 工具本身,但必须满足 Hyperf 运行硬性条件:
- 确认 PHP 版本:
php -v输出 ≥ 8.0;若不匹配,需先安装对应版本(如 via ondrej/php PPA) - 检查关键扩展:
php -m | grep -E 'swoole|openssl|zip|mbstring',缺一不可;Swoole 必须启用协程:php --ri swoole | grep "enable coroutine" - 禁用 CLI 模式下的 opcache:
echo "opcache.enable_cli=0" >> /etc/php/*/cli/php.ini(Hyperf 启动会失败否则) - 确保
/tmp可写,且系统时区已设(影响日志和定时任务)
三、离线部署:解压 + 强制隔离 + 重建自动加载
把 hyperf-offline.tgz 拷贝到目标机后,按顺序执行(不能跳步):
- 解压并清理残留:
tar -xzf hyperf-offline.tgz && rm -rf myapp/vendor(强制清空旧 vendor 防冲突) - 设置离线模式并安装:
COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-autoloader - 立即重建自动加载:
composer dump-autoload -o(否则启动必报 Class not found) - 验证入口文件:
head -n1 myapp/bin/hyperf.php应为require dirname(__DIR__) . '/vendor/autoload.php';
四、启动与守护:跳过开发依赖,直连生产流程
离线环境不建议用 php bin/hyperf.php start 手动启停,应直接对接 systemd:
- 复制示例 service 文件:
cp myapp/contrib/systemd/hyperf.service /etc/systemd/system/ - 修改
WorkingDirectory和User字段指向实际路径和运行用户 - 启用并启动:
systemctl daemon-reload && systemctl enable --now hyperf - 查看状态:
systemctl status hyperf,正常应显示 “active (running)” 且监听 9501 端口
整个过程不需要联网,也不依赖 Composer 全局命令是否可用。只要 vendor 完整、PHP 环境一致、autoload 重建到位,Hyperf 就能稳定运行。离线添加新组件?只能走 path 仓库方式,不能用 composer require。


















