必须输出完整JSON对象{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}才表示配置成功;若为空、null或仍为https://packagist.org,则未生效。

运行 composer config -g repo.packagist 看输出是不是有效镜像地址
这条命令不报错,不代表配置写进去了。很多人执行完 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就以为搞定了,结果 composer install 还是连 packagist.org。真正要看的是输出内容:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 或至少是完整 URL 字符串。如果输出是 null、空行、或者仍是 https://packagist.org,说明根本没写成功。
检查 COMPOSER_HOME 是否被错误覆盖导致读错配置文件
Composer 全局配置默认存在 ~/.composer/config.json(Linux/macOS)或 %APPDATA%Composerconfig.json(Windows),但一旦设置了 COMPOSER_HOME 环境变量,它就会完全接管路径。常见坑点包括:
-
COMPOSER_HOME含~或$HOME等变量,实际必须是绝对路径 - Windows 下用了
%USERPROFILE%而不是展开后的完整路径 - 用
sudo composer写过配置,导致实际生效的是/root/.composer/config.json
验证方式:运行 composer global config --list --verbose,第一行的 Loaded config file: 显示的路径才是 Composer 当前读取的位置。
用 readlink vendor/my-vendor/my-package 确认本地包是否真走 path 仓库
本地开发时,path 类型仓库必须体现为符号链接(Linux/macOS)或目录映射(Windows),否则 autoload 和实时修改都失效。执行以下检查:
-
readlink vendor/my-vendor/my-package(Linux/macOS)或dir vendormy-vendormy-package(Windows),确认指向你本地源码目录 -
php -r "echo class_exists('MyPackage\Calculator') ? 'ok' : 'fail';",输出ok才说明生产 autoload 生效 - 改了本地类代码后,直接运行测试,不
commit不composer update就该生效——这是path仓库最核心的验证点
别信 composer global list,要查 PATH 和命令可执行性
全局安装的工具(如 laravel、phpunit)能不能用,和 Composer 配置无关,只取决于系统 PATH 是否包含 vendor/bin 目录:
- Linux/macOS:运行
echo $PATH,确认含~/.composer/vendor/bin(或你自定义的COMPOSER_HOME/vendor/bin) - Windows:运行
echo %PATH%,确认含%APPDATA%Composerendorin - 再用
which laravel(Linux/macOS)或where laravel(Windows)看是否返回路径
改完 PATH 必须新开终端,source ~/.zshrc 之类操作在某些 shell 下也不可靠;Windows 用户尤其容易漏掉「重启命令提示符」这步。


















