2015-12-21 66 views
49

我遵循官方upgrade guide从5.1到5.2。第一小节说:将Laravel 5.1升级到5.2时发生致命错误

如果要安装Laravel 5.2的beta版本中,添加 "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,我得到以下错误(S):

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事后不会抛出错误如上所述。尽管如此,仍然令人困惑。

+3

在相关说明中,未来的读者可能希望查看[Laravel Shift](https://laravelshift.com) - 一个用于Laravel项目的自动升级工具。 –

回答

53

没有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, 
+1

这是否意味着我可以安全地从config/app.php中删除条目? – lesssugar

+0

似乎是的,但你应该确保'app'文件夹的整个结构和文件内容与Laravel 5.2中的新内容匹配。 –

+0

好的,谢谢。升级指南实际上告诉我要在服务提供商部分删除它。猜测在所有的代码和结构已经调整之后更新作曲家的依赖关系会更好。 – lesssugar

17

在从5.1升级到5.2的现有项目我们发现,之前和之后的供应商

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

去除线运行composer update是一个必要的顺序得到laravel更新COMPLE TE。

运行之前将允许laravel下载和更新当前框架库的依赖关系,然后取出后运行(作曲家才得以完成没有问题)

我们还发现,在.ENV文件中的任何值,不能有空格并且必须用引号包围才能工作。

7

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

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

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

+1

多数民众赞成在帮助,使用RM引导/缓存/ *。PHP修复我的错误 –

17

从配置中取出两个服务提供商/ app.php

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

我发现这里的解决方案:

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

服务提供商

照亮\基金会\ Providers \ ArtisanServiceProvider应该从您的app.php配置文件中的服务提供商列表中删除。

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