2015-12-21 8 views
49

Ich folge dem offiziellen upgrade guide von 5.1 bis 5.2. Erster Unterabschnitt sagt:Schwerwiegender Fehler beim Upgrade von Laravel 5.1 auf 5.2

Wenn Sie eine Beta-Version von Laravel 5.2 installieren, "minimum-stability": "beta" auf Ihre composer.json Datei hinzufügen.

Aktualisieren Sie die Datei composer.json so, dass sie auf laravel/framework 5.2.* zeigt.

Fügen Sie symfony/dom-crawler ~3.0 und symfony/css-selector ~3.0 dem require-dev-Abschnitt Ihrer composer.json-Datei hinzu.

Jetzt, nachdem ich die oben genannten Änderungen einführen und führen composer update, bekomme ich folgende Fehler (e):

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 

und

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

und

[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 

Die Fehler werden nach geworfen Das Update ist abgeschlossen, und es wird "Autoload-Dateien erstellen" ausgeführt.

Was könnte falsch sein?

Es sieht nicht wie ein benutzerdefiniertes Paket Problem, sondern ein Kern. Soll ich mit dem Upgrade Guide fortfahren und composer update NACH der Anpassung an die neue Framework-Version ausführen?

UPDATE

Lauf composer dump-autoload danach nicht die Fehler oben beschriebenen wirft. Immer noch verwirrend.

+3

Eine weitere Anmerkung, zukünftige Leser möchten vielleicht [Laravel Shift] (https://laravelshift.com) - ein automatisiertes Upgrade-Tool für Laravel-Projekte. –

Antwort

53

Es gibt keine Illuminate\Routing\ControllerServiceProvider mehr.

Wenn ich Sie wäre, würde ich meine app Projekt https://github.com/laravel/laravel/commits/develop vergleichen, wenn Sie zum Beispiel bei https://github.com/laravel/laravel/blob/develop/config/app.php schauen Sie Standardanbieter für Laravel 5.2 sehen:

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

Bedeutet dies, dass ich den Eintrag sicher aus der config/app.php entfernen kann? – lesssugar

+0

Es scheint ja, aber Sie sollten sicherstellen, dass die gesamte Struktur und Dateiinhalte von 'app' Ordner mit dem neuen von Laravel 5.2 –

+0

OK übereinstimmt, danke. Der Aktualisierungsleitfaden sagt mir eigentlich, dass ich ihn im Abschnitt "Dienstanbieter" entfernen soll. Schätze, es ist besser, Composer-Abhängigkeiten zu aktualisieren, nachdem der gesamte Code und die Struktur angepasst wurden. – lesssugar

17

Bei der Aktualisierung von 5,1 bis 5,2 auf bestehenden Projekten wir fanden, dass für die Anbieter

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

war eine notwendige Folge zu bekommen, die Laravel Update composer update vor und nach dem Entfernen der Linien laufen comple te.

vor Laravel erlauben würde, Laufen zum Herunterladen und die aktuellen Rahmenbibliotheksabhängigkeiten zu aktualisieren und dann nach dem Entfernen lief (Komponist konnte ohne Probleme abgeschlossen)

Wir fanden auch, dass jeder Wert in der .env Datei nicht haben kann Leerzeichen und müssen mit Anführungszeichen umgeben sein, um zu arbeiten.

7

Aktualisierung der App.php Datei unter Config/löste ein Problem, aber mit der Einführung des Bootstrap/Cache-Ordners werden Sie wahrscheinlich weiterhin in den gleichen Fehler laufen.

Ich habe das Composer-Update ausgeführt Vor dem Entfernen der zwischengespeicherten Datei habe ich den gleichen Fehler wiederholt. Stellen Sie sicher, dass Sie zuerst die Datei bootstrap/cache/services.php löschen.

Es könnte ein Handwerksbefehl dafür sein, aber ich habe diesen Schritt in der Dokumentation total vermisst.

+1

Das ist Hilfe, benutze rm bootstrap/cache/*. php meinen Fehler zu beheben –

17

Entfernen Sie die beiden Serviceanbieter von config/app.php

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

ich die Lösung hier gefunden:

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

Dienstleister

Die Illuminate \ Foundation \ Providers \ ArtisanServiceProvider sollte aus Ihrer Service Provider Liste in Ihrer app.php Konfigurationsdatei entfernt werden.

Die Illuminate \ Routing \ ControllerServiceProvider sollte aus Ihrer Dienstanbieterliste in Ihrer app.php-Konfigurationsdatei entfernt werden.