web-dev-qa-db-fra.com

Erreur fatale lors de la mise à niveau Laravel 5.1 à 5.2

Je suis le fonctionnaire guide de mise à nivea de 5.1 à 5.2. La première sous-section dit:

Si vous installez une version bêta de Laravel 5.2, ajoutez "minimum-stability": "beta" À votre fichier composer.json.

Mettez à jour votre fichier composer.json pour qu'il pointe vers laravel/framework 5.2.*.

Ajoutez symfony/dom-crawler ~3.0 Et symfony/css-selector ~3.0 À la section require-dev de votre fichier composer.json.

Maintenant, après avoir introduit les modifications ci-dessus et exécuté composer update, J'obtiens le (s) erreur (s) suivante (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

et

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

et

[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

Les erreurs sont renvoyées après la mise à jour est terminée et la "Génération de fichiers à chargement automatique" a lieu.

Qu'est-ce qui pourrait ne pas être correct?

Cela ne ressemble pas à un problème de package personnalisé, mais à un problème fondamental. Devrais-je continuer avec le guide de mise à niveau et exécuter composer update APRÈS que tout ait été ajusté pour correspondre à la nouvelle version du framework?

[~ # ~] met à jour [~ # ~]

Lancer composer dump-autoload Après ne génère pas les erreurs décrites ci-dessus. Toujours déroutant, cependant.

53
lesssugar

Il n'y a pas Illuminate\Routing\ControllerServiceProvider plus.

Si j'étais vous, je comparerais mon projet d'application à https://github.com/laravel/laravel/commits/develop, si vous regardez par exemple https://github.com/laravel/laravel/blob/develop/config/app.php vous verrez les fournisseurs par défaut pour 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,
59
Marcin Nabiałek

Lors de la mise à jour de 5.1 à 5.2 sur des projets existants, nous avons constaté que l'exécution de composer update avant et après la suppression des lignes pour les fournisseurs

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

était une séquence nécessaire pour que la mise à jour de la laravel) soit terminée.

Exécuter avant permettrait à laravel de télécharger et de mettre à jour les dépendances de la bibliothèque d'infrastructure actuelle, puis de s'exécuter après la suppression (le compositeur a pu se terminer sans problème)

Nous avons également constaté que toute valeur du fichier .env ne peut pas comporter d'espaces et doit être entourée de guillemets pour fonctionner.

20
iowatiger08

Supprimez les deux fournisseurs de services de config/app.php

Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
 Illuminate\Routing\ControllerServiceProvider::class,
20
Jinu P C

La mise à jour du fichier app.php sous config/a résolu un problème, mais avec l’introduction du dossier bootstrap/cache, vous continuerez probablement à rencontrer le même problème.

J'ai exécuté le composer mise à jour Avant de supprimer le fichier mis en cache, je ne cessais donc de frapper la même erreur. Assurez-vous de supprimer d'abord le fichier bootstrap/cache/services.php.

Il y a peut-être une commande artisanale pour cela, mais j'ai totalement manqué cette étape dans la documentation.

8
Adam Patterson

J'ai trouvé la solution ici:

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

Fournisseurs de services

Le Illuminate\Foundation\Providers\ArtisanServiceProvider doit être supprimé de la liste de vos fournisseurs de services dans votre fichier de configuration app.php.

Le Illuminate\Routing\ControllerServiceProvider doit être supprimé de la liste de vos fournisseurs de services dans votre fichier de configuration app.php.

2
Erhnam

Supprimez packages.php et config.php du dossier de cache bootstrap après son exécution composer dump-autoload

0
Daniel Ortegón