Composer离线安装需显式启用--offline并确保缓存完整:检查cache-dir下repo和dist目录是否存在对应packages.json及.zip包,配置COMPOSER_CACHE_DIR为全英文无空格路径,配合--no-interaction和--prefer-dist使用。
composer
install 时提示
怎么办
没网络时,
默认会尝试连 Packagist,哪怕本地有缓存也失败。根本原因不是缓存不存在,而是 Composer 默认不启用离线模式,也不检查本地镜像或已下载的 zip 包。
实操上必须显式告诉它“别联网”,靠两个关键配置:
加
和
(确保走压缩包而非 git clone)
提前设置
指向你确认有内容的缓存目录(比如
)
运行前执行
,避免卡在交互提示
如何验证缓存里真有需要的包
Composer 缓存不是“用了就留”,而是按
结构存压缩包和元数据。没网络时,光有
目录没用——那是安装结果,不是缓存源。
检查缓存是否可用,直接看这个路径是否存在且非空:
里面应该有
和按 vendor 名分的子目录;再进
子目录,应能看到
文件。如果这些是空的或压根没生成过,
一定会报错。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
的真实行为边界
不是万能开关:它只跳过远程元数据更新和 dist 下载,但依然会读取本地缓存中的
和
。一旦缓存缺失某包的 dist 文件,或者 lock 文件里指定了一个你从没装过的版本,它立刻失败,不会退化到其他策略。
必须确保
是之前联网时生成的,且未被手动修改
不能在
下执行
—— 它会直接报错退出
PHP 扩展依赖(如
)检查仍会运行,跟网络无关,但缺扩展照样中断
Windows 下
容易错在哪
Windows 用户常把缓存路径设成带空格或中文的目录(比如
),导致
静默跳过缓存,转而报网络错误。
根本原因是 Composer 内部某些路径拼接逻辑对空格和非 ASCII 字符处理不稳。最稳妥做法是:
用
显式重定向
确认该路径全英文、无空格、有读写权限
运行前执行
(cmd)或
(PowerShell)
离线场景下,缓存路径的“可预测性”比“符合默认习惯”重要得多——多一次手动配置,少半天排查。
Could not fetch packagescomposer install--no-interaction--prefer-distCOMPOSER_CACHE_DIR~/.composer/cacheexport COMPOSER_NO_INTERACTION=1vendor/package-name/versionvendor/$(composer config cache-dir)/repo/https---packagist.org/packages.jsondist/.zipcomposer install --offlinecomposer install --offline--offlinepackages.json.zipcomposer.lock--offlinecomposer updateext-curlCOMPOSER_CACHE_DIRC:\Users\张三\AppData\Roaming\Composer\Cachecomposer install --offlinecomposer config --global cache-dir D:/composer-cacheset COMPOSER_CACHE_DIR=D:\composer-cache$env:COMPOSER_CACHE_DIR="D:\composer-cache"