Laravel经Docker Shift升级5.3→5.4→5.5后Barryvdh\Cors类不存在报错咨询
问题原因及解决方案
报错信息:
In ProviderRepository.php line 208: Class 'Barryvdh\Cors\ServiceProvider' not found Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1
1. 扩展版本与Laravel版本不兼容
- Laravel 5.3 仅支持
barryvdh/laravel-cors0.8.x及更早版本,升级到Laravel 5.4/5.5后,旧版本扩展的类路径、命名空间已不符合要求,同时如果composer.json锁定了旧版本扩展,也不会自动安装适配新版本Laravel的扩展包,直接触发类找不到错误。 - 临时修复步骤:先打开
config/app.php,注释掉Barryvdh\Cors\ServiceProvider的注册代码,即可正常执行composer和artisan命令,后续安装对应版本扩展后再取消注释即可。
2. 扩展未被正确安装
- 升级过程中如果出现依赖冲突、网络异常等问题,会导致
barryvdh/laravel-cors没有被成功写入vendor目录,自动加载文件中没有对应类的映射,哪怕配置的命名空间完全正确也会报错。 - 修复步骤:注释Provider注册代码后,执行
composer require barryvdh/laravel-cors,composer会自动匹配和当前Laravel版本适配的扩展版本,安装完成后恢复Provider的注册配置即可。
3. 旧缓存未清理
- 升级前生成的配置缓存、自动加载缓存没有被清理,旧缓存中不存在新版本扩展的类映射,也会触发该错误。
- 修复步骤:删除
bootstrap/cache目录下的所有缓存文件,再执行composer dump-autoload重新生成自动加载文件即可。
内容的提问来源于stack exchange,提问作者Ralph Hoglund
相关产品推荐
相关产品推荐

