Composer autoload 失效主因是 composer.json 语法错误或 PSR-4 路径配置不规范,需用 composer validate 检查语法,确保命名空间后双反斜杠、路径为相对项目根目录的正确格式,并执行 dump-autoload -o 重建优化映射。

composer dump-autoload -v 看不到你的命名空间?先查 composer.json 格式
运行 composer dump-autoload -v 后,输出里压根没出现你配置的命名空间(比如 "App"),说明 autoload 配置根本没被读取。这不是路径问题,是 JSON 解析失败。
- 检查
composer.json是否有非法逗号、多出的逗号、漏掉的引号,或用了中文标点 -
"psr-4": {"App": "src/"}是错的——末尾必须是"App\"或"App/",少一个反斜杠,Composer 就当它不是 PSR-4 前缀 - 路径不能写成
"./src/"或"/full/path/src/",只接受相对于项目根目录的相对路径,如"src/" - 执行
composer validate,它会直接报出语法错误位置
vendor/composer/autoload_psr4.php 里有映射,但类还是找不到?核对三处大小写与层级
打开 vendor/composer/autoload_psr4.php,搜到类似 'App' => array($baseDir . '/src'),说明映射已生成。但 new AppHttpControllersHomeController() 仍报错,问题一定出在“拼路径”环节。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 命名空间声明必须和文件路径严格对应:若类文件是
src/Http/Controllers/HomeController.php,PHP 文件里必须写namespace AppHttpControllers;,不能漏Controllers或写成controllers - Linux 服务器区分大小写,
src/http/和src/Http/是两个目录;开发机 macOS 默认不区分,上线就崩 - PSR-4 是字符串截取+拼接:配置
"App\": "src/"+ 类名AppHttpControllersHomeController→ 截掉App\→ 剩下HttpControllersHomeController→ 拼路径src/Http/Controllers/HomeController.php。所以src/App/Http/Controllers/这种结构必然失败
ThinkPHP 或自定义目录加了 autoload 却不生效?确认是否漏了 dump-autoload -o
TP5.1/6 默认不扫描 app/library/ 或 extend/ 这类目录,光改 composer.json 没用,必须触发映射重建。
- 改完
composer.json后,必须运行composer dump-autoload -o(-o强制优化生成,同时会暴露路径拼写错误) - 如果用了
"files": ["app/helper.php"]加载函数,同样要dump-autoload,否则Call to undefined function - TP 项目常手动 require
vendor/autoload.php,但入口脚本里写的是require '../vendor/autoload.php'—— 路径依赖当前工作目录,换成require __DIR__ . '/vendor/autoload.php'才可靠
本地 path 包 symlink 失效却以为它在实时更新?验证 symlink 是否真实存在
你改了本地包代码,主项目里却没生效,90% 是 symlink 创建失败后静默 fallback 成了 copy,vendor 里存的是旧副本。
- Linux/macOS:运行
ls -la vendor/acme/utils,看到->才是 symlink;若显示普通文件夹,说明 fallback 了 - Windows:用
dir vendorcmeutils,看到<SYMLINKD>或JUNCTION才对;普通文件夹需管理员权限重试 - 关键不在主项目配置,而在本地包自己的
composer.json是否有"options": {"symlink": true} - 即使 symlink 存在,也要进
vendor/composer/autoload_psr4.php搜你的命名空间,确认映射路径指向的是本地包的src/绝对路径,而不是 vendor 下的副本路径
dump-autoload -v 的第一行输出开始盯。

















