必须清缓存后执行composer require -vvv并搜索downloading,确认日志中出现https://mirrors.aliyun.com/composer/packages.json(带末尾/);若见packagist.org地址,说明被项目级repositories覆盖,或配置未真正生效。

怎么确认 Composer 镜像源真在用?
配置写进去了 ≠ 正在生效。Composer 不报错、不提示、不验证 URL 可达性,漏一个字符或少个斜杠,就静默退回到 packagist.org。
-
composer config -g repo.packagist只显示你“写了什么”,不是“正在用什么” - 真正验证必须触发一次真实网络请求:先清缓存
composer clear-cache,再执行composer require monolog/monolog -vvv - 在输出日志里搜索
Downloading,确认出现的是https://mirrors.aliyun.com/composer/packages.json(注意末尾斜杠) - 如果看到
https://packagist.org/packages.json或https://repo.packagist.org/packages.json,说明被项目级composer.json中的repositories覆盖了 - 更稳的方式是看
composer diagnose输出里的Repo packagist.org:行,它显示的是运行时实际连接的目标地址
全局配置改了但没反应?先查这三件事
常见现象是命令返回 success,但后续 composer install 依然慢、依然走国外源——大概率不是镜像问题,而是配置根本没落进对的地方。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 漏了
-g参数:写成composer config repo.packagist composer https://mirrors.aliyun.com/composer/,结果只改了当前项目的composer.json,对其他项目完全无效 - Windows 用户执行完没重启终端;Linux/macOS 下用了
sudo composer config -g,配置被写进了/root/.composer/config.json,普通用户运行时读不到 - 多个 Composer 版本共存:运行
which composer和composer --version看到的可能是 Homebrew 安装的,但curl -sS https://getcomposer.org/installer | php下载的二进制也在$PATH里,config -g实际操作的是另一个版本的配置
怎么快速定位某项配置是否来自全局?
别翻 JSON 文件,composer config -g -l 是唯一可靠入口——它输出的是运行时合并后的最终值,自动跳过非法 JSON、权限错误、路径错位等导致的静默失效。
- 加
--verbose可看到实际加载的是哪个文件:composer config -g -l --verbose,输出里会标出读取自/home/user/.config/composer/config.json还是/home/user/.composer/config.json - 输出中带
(global)标记的项,才说明是显式设置的全局值;没标记的可能是默认值或项目级覆盖 - 查镜像:用
composer config -g -l | grep "repo|packagist";查缓存目录:composer config -g -l | grep cache-dir;查 GitHub token:composer config -g -l --show-passwords | grep github-oauth
本地 path 包测试时 autoload 为啥总报 Class not found?
这不是 Composer 安装失败,而是 autoload 链路断在了最基础的三处对齐上——name、路径、PSR-4 映射缺一不可,且大小写和斜杠都敏感。
- 主项目
composer.json的repositories.url值必须是相对于该文件的路径,比如"../my-package",不能是绝对路径或错层路径 - 主项目
require里必须写"my-vendor/my-package": "@dev",不能用*或dev-main;本地包composer.json的name字段必须一字不差匹配 -
autoload-dev.PSR-4映射末尾必须带反斜杠:"MyPackageTests\": "tests/",少一个就无法解析命名空间层级 - 改完
autoload-dev后,必须手动运行composer dump-autoload --dev,否则vendor/composer/autoload_dev.php不更新 - 验证是否真通:用
php -r "echo class_exists('MyPackageCalculator') ? 'ok' : 'fail';"测试生产 autoload;再用php -r "echo class_exists('MyPackageTestsCalculatorTest') ? 'ok' : 'fail';"测试测试类










