离线安装 Composer 需在同 PHP 版本联网机生成 composer.phar 并校验哈希,拷贝至目标机后设执行权限并软链;离线装依赖须设 COMPOSER_DISABLE_NETWORK=1、禁用插件脚本、清全局仓库配置、用 path 仓库引入本地包,并运行 dump-autoload -o 重建自动加载。

断网服务器上怎么装 Composer 本体
不能靠包管理器(apt/yum)或 curl 直接拉,离线装 Composer 就是拷 composer.phar——它才是唯一可移植的执行体。
- 必须在**同 PHP 版本**的联网机器上生成:先
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');",再用官网当前sha384哈希校验(别硬写旧值),最后php composer-setup.php - 生成后删掉
composer-setup.php,只留composer.phar拷到目标机 - 加执行权限:
chmod +x composer.phar;建议软链进/usr/local/bin/composer,避免路径污染 - 验证:在离线机跑
php composer.phar --version,不报错且输出版本号才算成功
离线部署项目依赖为什么 vendor 复制后还报 Class not found
不是文件没拷全,是 autoload 没重建,或者 PHP 环境不一致导致加载失败。
- 即使
vendor/和composer.lock都完整,也必须运行composer dump-autoload -o,否则vendor/autoload.php不包含新路径或 PSR-4 映射 - 源机和目标机的 PHP 版本必须完全一致(比如都是
8.2.12,8.2.13可能因内部 API 微变导致类加载失败) - 目标机必须已启用
mbstring、openssl、zlib扩展;缺一个,require 'vendor/autoload.php'就会直接 fatal error - 验证方式:在目标机 CLI 下执行
php -r "require 'vendor/autoload.php'; echo 'OK';",输出 OK 才算过这一关
COMPOSER_DISABLE_NETWORK=1 是硬开关,不是可选项
不设这个环境变量,composer install 一定会去请求 https://repo.packagist.org/packages.json,哪怕 vendor 已存在、lock 文件也完好。
-
--no-plugins、--no-scripts、--no-autoloader全部依赖它生效;没它,这些参数只是摆设 - Linux/macOS:前置写法
COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-autoloader - Windows CMD:
set COMPOSER_DISABLE_NETWORK=1 && composer install --no-plugins --no-scripts --no-autoloader - PowerShell:
$env:COMPOSER_DISABLE_NETWORK="1"; composer install --no-plugins --no-scripts --no-autoloader - 全局配置残留会导致 fallback:必须提前运行
composer config --global repo.packagist false,否则即使设了环境变量也会退出
离线添加本地包只能用 path 仓库,require 不行
composer require 默认强制联网查包名和版本,离线必挂;唯一可行的是把本地目录当仓库用。
- 目标包根目录下必须有合法
composer.json,含完整"name"(如"acme/utils")和"version"或分支标识(如"dev-main") - 项目
composer.json中显式声明:"repositories": [{"type": "path", "url": "./packages/my-utils"}] - 执行
composer require acme/utils:@dev(注意必须带@dev,^1.0这类约束在 path 下无效) - 装完立刻
composer dump-autoload -o,否则该包的类不会被自动加载 - 如果项目已有大量包,建议加
--no-dev避免加载 dev-only 类,减少出错面
离线不是“拔网线就行”,而是要同时切断环境变量、配置项、锁文件结构、命令参数四条网络通路。漏掉任意一环,composer install 就会在 Loading composer repositories 阶段卡死或报错。











