必须配HTTPS全量镜像,因packagist.org在国内不可靠;composer config -g repo.packagist失败主因是PHP禁用proc_open/putenv,键名、type值composer、URL末尾/缺一不可;验证须用composer show -v看真实请求地址。

不配镜像,composer install 卡在 Loading composer repositories 是常态,不是你网络差,是默认源 packagist.org 在国内不可靠——2026 年起必须配 HTTPS 全量镜像,且得验证真实请求地址是否生效。
composer config -g repo.packagist 命令总失败?先查 PHP 禁用函数
报错 proc_open(): fork failed 或 putenv() has been disabled,和镜像地址无关,是 PHP 层面拦住了 Composer 启动所需的底层函数。
- 检查
php.ini中的disable_functions配置项,确认没禁用proc_open和putenv(哪怕多一个空格也会失效) - 改完后必须重启 PHP 服务:CLI 模式需重开终端;Web 环境要重启
php-fpm或Apache/Nginx - 快速验证:
php -r "echo proc_open('echo 1', [], $p) ? 'ok' : 'fail';"输出ok才算通过
全局镜像配置命令写错了?键名、type、斜杠一个都不能少
composer config -g repo.packagist 这条命令看似简单,但抄错一个字符就白配——它不会报错,但后续所有依赖请求仍走官方源。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 固定键名是
repo.packagist,不是repos.packagist(少个 s)、也不是packagist.org - type 字段值必须显式写成
composer,小写,不能省略,也不能写成composer-type - URL 末尾必须带
/,例如https://mirrors.aliyun.com/composer/,缺斜杠会导致部分版本拼接出错 - 2026 年实测有效的三个地址(任选其一):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php/
怎么确认镜像真生效了?别信 composer config -g 的输出
composer config -g repo.packagist 只显示“有没有设”,不显示“有没有被覆盖”或“有没有被项目级配置顶掉”。最可靠的方式是触发一次真实网络请求。
- 运行
composer show -v | head -n 5,观察日志里实际出现的Downloading https://...地址 - 如果看到
packagist.org→ 镜像没生效(可能被项目composer.json里的repositories覆盖) - 如果看到
aliyun.com/tencent.com→ 镜像正常 - 如果看到
phpcomposer.com或laravel-china.org→ 地址已过期,大概率会卡住或返回 404/500
换源后还是慢?可能是 fxp/composer-asset-plugin 在拖后腿
如果你的项目依赖 Yii2 或老版本前端包,很可能还挂着已废弃的 fxp/composer-asset-plugin。它不走 Composer 镜像配置,而是直连 Bower/NPM 源——这两个源在国内根本没镜像。
- 检查是否启用:
composer global show | grep fxp - 解决方案:升级到
yiisoft/yii22.0.14+,改用npm-asset-packagist.org;或直接迁移到yarn/npm管理前端资源 - 临时禁用(不推荐长期):
composer global remove fxp/composer-asset-plugin
镜像配置本身很简单,真正容易翻车的是 PHP 环境限制、键名拼写、以及被旧插件或项目级配置悄悄覆盖——验证必须看 composer show -v 的真实请求地址,而不是配置命令的返回结果。

















