致命的错误,同时升级Laravel 5.1至5.2

我正在从5.1到5.2的官方升级指南 。 第一小节说:

如果您正在安装Laravel 5.2的testing版,请将"minimum-stability": "beta"到您的composer.json文件中。

更新你的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之后,所有已经调整,以适应新的框架版本?

UPDATE

之后运行composer dump-autoload 不会抛出上述错误 。 尽pipe如此,仍然令人困惑。

没有Illuminate\Routing\ControllerServiceProvider了。

如果我是你,我会比较我的应用程序项目到https://github.com/laravel/laravel/commits/develop ,如果你看例如https://github.com/laravel/laravel/blob/develop/config/app.php您将看到Laravel 5.2的默认提供程序:

 Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, Illuminate\Cache\CacheServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Cookie\CookieServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, Illuminate\Filesystem\FilesystemServiceProvider::class, Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class, Illuminate\Mail\MailServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Redis\RedisServiceProvider::class, Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, Illuminate\Session\SessionServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, 

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

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

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

之前运行将允许laravel下载和更新当前的框架库依赖关系,然后在删除后运行(composer php能够完成而没有问题)

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

从config / app.php中移除两个服务提供者

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

更新config /下的app.php文件解决了一个问题,但是引入了bootstrap / cache文件夹后,您可能会继续运行相同的错误。

我跑了composer php更新在删除caching的文件之前,所以我一直在打相同的错误。 确保先删除bootstrap / cache / services.php文件。

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

我在这里find了解决scheme:

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

服务供应商

Illuminate \ Foundation \ Providers \ ArtisanServiceProvider应该从您的app.phpconfiguration文件中的服务提供商列表中删除。

Illuminate \ Routing \ ControllerServiceProvider应该从您的app.phpconfiguration文件中的服务提供者列表中删除。