致命的错误,同时升级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.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
之后,所有已经调整,以适应新的框架版本?
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文件中的服务提供者列表中删除。