Linux中判断vendor目录下包是否为符号链接,关键看ls -la输出是否有“->”指向源路径;若显示普通目录则为copy模式,需检查name大小写、URL可访问性、composer.json合法性、repositories配置是否生效及autoload是否同步。

看 vendor 目录是不是符号链接
不是靠终端输出的 Symlinking 日志判断,那可能是缓存提示。关键看 vendor/vendor-name/package-name 实际是不是符号链接:
- macOS / Linux:
ls -la vendor/acme/utils,输出里有->指向源路径才算成功 - Windows:
dir vendor\acme\utils,看到<SYMLINKD>或JUNCTION标识才是 symlink - 如果显示普通目录,说明 fallback 成了 copy 模式——立刻检查
name大小写、url路径可访问性、本地包是否含合法composer.json
确认 repositories 配置被真正加载
composer config repositories 输出必须包含你新加的仓库条目,且 packagist.org 必须显式禁用:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 输出里还存在
https://repo.packagist.org?说明没关官方源,私有源再靠前也无效 -
{"packagist.org": false}必须是repositories数组里的**独立对象**,且放在末尾 - 别用
composer config --global repos.packagist false,这是全局污染,其他项目会崩
检查本地包 name 是否和 require 完全一致
Composer 不做模糊匹配,大小写、分隔符、vendor 名必须逐字节相同:
-
"acme/utils"≠"Acme/utils"≠"acme_utils" - 路径
url必须指向含composer.json的目录,不能带尾部/(如"../my-pkg/"会被静默忽略) - 本地包
composer.json中的name字段,必须和主项目require里写的字符串完全一样
验证 autoload 是否同步了真实路径
即使 symlink 成功,new MyClass() 还是报类不存在?大概率是 autoload 没加载到本地包的真实路径:
- 运行
composer dump-autoload -o,它会扫描所有已启用仓库(包括 path 类型),把本地包的 autoload 段合并进vendor/composer/autoload_*.php - 检查
vendor/composer/autoload_static.php,确认你的命名空间是否出现在里面 - Docker 或 IDE 场景下,Xdebug 断点失效常因挂载路径与 IDE 显示路径不一致(比如宿主机是
/Users/me/my-pkg,IDE 却映射为./my-pkg)
packagist.org 是否真被禁用、name 字段是否大小写零误差、autoload 是否重建——这四点漏掉任一,都会让仓库配置“看似生效实则失效”。尤其 Windows 下管理员权限和 Docker 的 --cap-add=SYS_ADMIN 是静默失败高发区。

















