vendor/autoload.php 不会因 composer clear-cache 自动重建,需执行 composer install、update 或 dump-autoload;常见类找不到是因 autoload 未触发或配置遗漏,应运行 composer dump-autoload -o(-a 和 --dev 按需添加)并验证文件内容与时间戳。

清理 Composer 缓存后,vendor/autoload.php 不会自动重建——它只在 composer install、composer update 或显式执行 composer dump-autoload 时生成。缓存清理(composer clear-cache)只影响下载包的本地副本,不影响已安装依赖的 autoload 映射。
为什么 composer clear-cache 后类找不到
常见现象是:清完缓存、重装依赖(如 composer install --no-cache),但新类仍报 Class not found。根本原因不是缓存没清干净,而是 autoload 文件压根没被触发重建,或重建时漏掉了你的配置。
-
composer install默认会重建 autoload,但若加了--no-scripts或--no-autoloader,这步就被跳过 - 你改过
composer.json的autoload段(比如新增了"App\": "src/"),但没手动运行composer dump-autoload - 清缓存后用了
composer install --no-dev,而你的新类在autoload-dev下,导致没被扫描
composer dump-autoload -o 是最直接的补救方式
只要 vendor/ 存在且 composer.json 配置正确,这条命令就能立刻刷新所有 autoload 映射文件,比重装依赖快得多,也更安全。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须加
-o(即--optimize):否则 PSR-4 映射不会写入autoload_static.php,classmap 也不会生成,生产环境可能加载失败 - 如果用了
classmap配置(例如"classmap": ["legacy/"]),还得加-a(--classmap-authoritative)确保重新扫描目录 - 开发中引入了测试类或 provider,且它们定义在
autoload-dev里,需额外加--dev参数
检查 autoload 文件是否真更新了
别只信命令返回 “Generated autoload files”——得验证文件内容和时间戳:
- 看
vendor/composer/autoload_psr4.php是否包含你期望的命名空间映射,比如'App\' => array($vendorDir . '/myproject/src') - 运行
ls -l vendor/composer/autoload_*.php,确认文件修改时间在你执行命令之后 - 临时加一行
var_dump(class_exists('App\Services\UserService'));,看是否返回true - 如果返回
false,但文件路径和命名空间都对,大概率是 opcode 缓存没清——PHP 还在用旧的类路径缓存
最容易被忽略的是:你以为清了缓存就“重来一遍”,其实 vendor/ 里的 autoload 文件是独立维护的,它不随缓存清理而重写,也不因 composer install 必然刷新——取决于你传了什么参数、跑了什么钩子、甚至 PHP 进程有没有重启。

















