将Laravel 5.1升级到5.2时出现致命错误

时间:2015-12-21 11:55:51

标签: php laravel laravel-5.1 laravel-5.2

我跟随官方的 upgrade guide 从5.1到5.2。第一小节说:

  

如果要安装Laravel 5.2的beta版,请添加   你的composer.json文件"minimum-stability": "beta"

     

更新您的composer.json文件以指向laravel/framework 5.2.*

     

symfony/dom-crawler ~3.0symfony/css-selector ~3.0添加到   你的composer.json文件的require-dev部分。

现在,在我介绍上述更改并运行composer update之后,我收到以下错误:

PHP Fatal error:  Class 'Illuminate\Routing\ControllerServiceProvider' not found 
in /home/vagrant/Code/myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 146

[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Illuminate\Routing\ControllerServiceProvider' not found

[RuntimeException]
Error Output: PHP Fatal error:  Class 'Illuminate\Routing\ControllerServiceProvider' not found in /home/vagrant/Code/myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 146

更新完成后抛出错误,"生成自动加载文件"发生了。

可能出现什么问题?

它看起来不像自定义包问题,而是核心问题。我是否应该继续使用升级指南并运行composer update所有内容经过调整以适应新的框架版本?

更新

之后运行composer dump-autoload 不会抛出上述错误。但是仍然令人困惑。

5 个答案:

答案 0 :(得分:20)

在现有项目的5.1到5.2更新中,我们发现在删除提供商的行之前和之后运行composer update

Illuminate\Routing\ControllerServiceProvider::class Illuminate\Foundation\Providers\ArtisanServiceProvider::class

是完成laravel更新的必要序列。

之前运行将允许laravel下载并更新当前框架库依赖项,然后在删除后运行(编写器能够完成而不会出现问题)

我们还发现.env文件中的任何值都不能包含空格,并且必须用引号括起来才能工作。

答案 1 :(得分:20)

从config / app.php

中删除两个服务提供商
Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
 Illuminate\Routing\ControllerServiceProvider::class,

答案 2 :(得分:8)

更新config /下的app.php文件解决了一个问题,但是引入了bootstrap / cache文件夹,你可能会继续遇到同样的错误。

我运行了作曲家更新在删除缓存文件之前,我一直遇到同样的错误。确保首先删除bootstrap / cache / services.php文件。

可能有一个工匠命令,但我完全错过了文档中的这一步。

答案 3 :(得分:2)

我在这里找到了解决方案:

https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

服务提供商

应从app.php配置文件中的服务提供商列表中删除 Illuminate \ Foundation \ Providers \ ArtisanServiceProvider

应从app.php配置文件中的服务提供商列表中删除 Illuminate \ Routing \ ControllerServiceProvider

答案 4 :(得分:0)

从引导缓存文件夹中删除packages.php和config.php 运行作曲家dump-autoload后