我跟随官方的 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.0
和symfony/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
不会抛出上述错误。但是仍然令人困惑。
答案 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后