composer优化后的类映射硬编码在vendor/composer/autoload_classmap.php和autoload_static.php中,并非独立缓存文件;需运行composer dump-autoload -o重建,而非手动删除。

composer dump-autoload -o 生成的缓存存在哪
它不生成独立“缓存文件”,而是把所有类路径硬编码进 vendor/composer/autoload_classmap.php 和 vendor/composer/autoload_static.php。这两个文件是 PHP 源码,被 vendor/autoload.php 直接 require。所谓“优化缓存”,其实是 classmap 映射的静态化结果,不是可清理的临时缓存。
删掉 autoload_classmap.php 就算清空了吗
不算。手动删文件只是表面动作,真正要生效得让 Composer 重建映射:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer dump-autoload(不带-o)会删掉autoload_classmap.php,但保留autoload_static.php中的 PSR-4/PSR-0 映射 - 运行
composer dump-autoload -o才会重新生成 classmap,并覆盖autoload_static.php里的部分逻辑 - 如果项目用了
optimize-autoloader: true(常见于生产环境),composer install或composer update也会自动触发-o
为什么 classmap 还在,但类却加载不了
常见于以下情况:
-
vendor/composer/autoload_classmap.php里还残留已删类的路径 —— 这通常是因为composer remove中断过,或dump-autoload没跑全 - PHP Opcache 缓存了旧的
autoload_classmap.php,导致即使文件已更新,PHP 仍执行旧版本:用opcache_reset()或重启 PHP-FPM -
composer.json的autoload.classmap数组里还写着已删目录,比如"classmap": ["database/"],而database/已不存在
彻底重置 autoload 映射的最小操作链
别删 vendor 或 composer.lock,只需四步:
- 确认要删的类或目录已从代码中移除(包括
use、new、字符串类名、反射调用) - 检查
composer.json的autoload和autoload-dev区块,删掉所有指向已删路径的条目 - 运行
composer dump-autoload(先不加-o) - 再运行
composer dump-autoload -o,并验证vendor/composer/autoload_classmap.php不再包含无关路径










