运行 composer global config --list --verbose 查看 Loaded config file 路径,确认实际生效配置位置;国内旧镜像已停服,需删 vendor 和 composer.lock 后重装;autoload 配置须严格遵循 PSR-4 规范,路径大小写敏感且不可相对。

composer config -g repo.packagist 输出为空或不是预期值?先看真实加载路径
配置改了但不生效,90% 是因为 Composer 根本没读你改的那个文件。最直接的判断方式是运行 composer global config --list --verbose,第一行输出的 Loaded config file: 路径才是当前实际生效的位置。
常见干扰项包括:
-
COMPOSER_HOME环境变量被设成无效路径(比如空值、不存在的目录),尤其 Windows 下大小写敏感,%COMPOSER_HOME%优先级高于默认路径 - 用过
sudo composer,导致配置写进/root/.composer/config.json,而你日常用的是普通用户 - Homebrew 安装的 Composer 可能走自己的全局路径,和手动安装的不一致
验证后若路径不对,先执行 unset COMPOSER_HOME(macOS/Linux)或 set COMPOSER_HOME=(Windows cmd),新开终端再试。
composer config -g repo.packagist 显示旧镜像?说明源已失效
国内镜像如 https://packagist.phpcomposer.com 和 https://packagist.laravel-china.org 自 2022 年起已停服,返回 404 不是临时问题,而是永久下线。运行 composer config -g repo.packagist,只要输出里含这两个地址中的任意一个,就必须换源。
换源后仍报 404 的真正原因是:composer.lock 文件里硬编码了旧 provider 地址(例如 https://packagist.org/p2/monolog/monolog.json)。Composer 会优先尝试 lock 里的地址,而不是新配置的镜像。
必须做三件事才能彻底解决:
- 删掉
vendor/目录 - 删掉
composer.lock - 执行
composer install(不是update)
composer dump-autoload -v 没扫到你的命名空间?检查 autoload 配置格式
运行 composer dump-autoload -v 时,如果输出里压根没出现你的命名空间(比如 "App"),说明 composer.json 中的 autoload 配置根本没被识别。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
高频错误点:
- PSR-4 键末尾漏反斜杠:
"App"应为"App\"或"App/" - 路径用了相对写法:
"./src/"是非法的,必须写成"src/" - JSON 格式错误:多逗号、少引号、缩进导致解析失败(可用
composer validate快速检测) - 配置写在了子包或依赖的
composer.json里,而非项目根目录
改完记得立刻验证:composer dump-autoload -v | grep "App\",确认有扫描日志输出。
vendor/composer/autoload_psr4.php 里没你的映射?说明写入失败或路径错位
这个文件不是缓存,是自动加载的最终执行依据。打开它,搜索你的命名空间前缀(如 "App\"),看是否生成了类似这样的条目:
'App\' => array($baseDir . '/src')
如果没出现,说明配置未生效;如果出现了但路径不对(比如指向 /wrong/path/src),说明 composer.json 中写的路径和实际物理路径不一致。
特别注意 PSR-4 的路径推导逻辑:配置了 "MyApp\": "app/",类 MyAppHttpControllersHomeController 就必须放在 app/Http/Controllers/HomeController.php —— 多一层 MyApp/ 目录就会导致匹配失败。
别依赖 IDE 或文件浏览器的“大小写不敏感”显示,Linux/macOS 下路径大小写严格匹配,src/Service/ 和 src/service/ 是两个不同目录。

















