不配镜像,composer install 必然卡在 loading composer repositories;必须执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,且键名、type值、https末尾斜杠三者缺一不可,验证输出须为完整 json 或对应 url。

composer config -g repo.packagist 命令必须执行
不配镜像,composer install 卡在 Loading composer repositories with package information 是常态,不是网络差,是 packagist.org 在国内根本连不上——DNS 解析慢、TLS 握手失败、无 CDN 节点。阿里云和中科大镜像已全量同步,延迟低于 50ms,且严格校验 composer.lock,不是“能用就行”的降级方案。
执行以下任一命令即可生效(Linux/macOS/WSL):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证是否成功:
composer config -g repo.packagist
输出应为 https://mirrors.aliyun.com/composer/,而非 https://packagist.org。若提示 Permission denied,说明 ~/.composer/ 目录权限异常,运行 chown -R $USER ~/.composer 修复,或临时加 sudo。
- Windows 用户即使用了 Composer-Setup.exe 图形安装器,也必须手动补这一步:以管理员身份打开 PowerShell 或 CMD,再执行上述
config -g命令 - 别用已下线的旧地址,如
https://packagist.phpcomposer.com(2023 年关停) - 中科大镜像可作备用:
composer config -g repo.packagist composer https://mirrors.ustc.edu.cn/composer/
composer.lock 文件不是可选文件,是环境 DNA
克隆项目后只跑 composer install 却报 Class 'GuzzleHttp\Promise' not found?大概率是本地没走 composer.lock,而是按 composer.json 里 "^7.0" 自由安装了 7.9.0,而项目实际基于 7.2.0 开发。
composer.lock 记录的是每个依赖的精确版本、哈希值、安装路径,相当于项目的“环境快照”。团队协作中它必须提交进 Git:
- 首次生成锁文件:
composer install(非update) - 他人拉取后,只要执行
composer install,就会严格安装 lock 中记录的版本 - 更新依赖时,必须用
composer update --lock,否则只改composer.json不同步 lock,等于放任版本漂移
忽略它,轻则本地能跑线上崩,重则引发“幽灵 BUG”:比如 Monolog v3 要求 debug($msg, $context, $extra),而你代码还按 v2 写成两参数,线上直接 Fatal Error。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
scripts 字段写错会导致 composer run 失败
在 composer.json 的 scripts 里写 "auto-install": "composer install --no-dev",然后执行 composer run auto-install 报 Command not found?问题出在嵌套调用没被识别——Composer 不会自动解析字符串里的 composer 命令。
正确写法是用数组形式显式声明执行链:
"scripts": {
"install-dev": ["composer install", "npm install"]
}
这样 composer run install-dev 才能顺序执行两个命令。其他常见错误包括:
- 脚本路径未加引号导致空格截断,如
"php ./script.php arg1 arg2"应写作["php", "./script.php", "arg1", "arg2"] - 误把 PHP 类方法当脚本写,却没注册
autoload或没加php前缀 - 脚本依赖未在
require-dev中声明,导致容器或 CI 环境里找不到命令
Docker 环境里 composer 配置容易被覆盖
用 lee88688/aider-composer 这类预装镜像时,宿主机的全局配置(~/.composer/config.json)默认不会挂载进容器,所以你在本地配好的镜像源对容器内 composer 无效。
解决方案只有两个:
- 构建自定义镜像时,在 Dockerfile 中加入
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 运行容器时通过
-v挂载宿主机配置目录:docker run -v $HOME/.composer:/root/.composer ...(注意路径映射用户 UID)
别指望 composer create-project 或 install 时加 --repository 参数来绕过——它只对单次命令生效,无法持久化,且不作用于后续 update 或脚本触发的子命令。










