我目前正在花时间将我的项目从Laravel 4.2升级到Laravel 5.2.
经过很多麻烦我设法正确运行5.1版本所以我开始了5.1到5.2的程序,如官方文档中所述:https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0
第一步之后,我的composer.json看起来像这样:
"require": { "laravel/framework": "5.2.*", "illuminate/html": "5.*", "andywer/js-localization": "dev-laravel-5", "laracasts/flash" : "~1.0" }, "require-dev": { "phpunit/phpunit": "~4.0", "phpspec/phpspec": "~2.1", "symfony/dom-crawler": "~3.0", "symfony/css-selector": "~3.0" }, "autoload": { "classmap": [ "database", "app/Models", "app/Http/Controllers" ], "psr-4": { "App\\": "app/" } }, "autoload-dev": { "classmap": [ "tests/TestCase.php" ] },
我还更新了app.php配置,以删除providers部分中的ArtisanServiceProvider和ControllerServiceProvider.
我的app.php配置如下所示:
/* |-------------------------------------------------------------------------- | Autoloaded Service Providers |-------------------------------------------------------------------------- | | The service providers listed here will be automatically loaded on the | request to your application. Feel free to add your own services to | this array to grant expanded functionality to your applications. | */ 'providers' => array( /* * Laravel Framework Service Providers... */ 'Illuminate\Auth\AuthServiceProvider', 'Illuminate\Broadcasting\BroadcastServiceProvider', 'Illuminate\Bus\BusServiceProvider', 'Illuminate\Cache\CacheServiceProvider', 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider', 'Illuminate\Cookie\CookieServiceProvider', 'Illuminate\Database\DatabaseServiceProvider', 'Illuminate\Encryption\EncryptionServiceProvider', 'Illuminate\Filesystem\FilesystemServiceProvider', 'Illuminate\Foundation\Providers\FoundationServiceProvider', 'Illuminate\Hashing\HashServiceProvider', 'Illuminate\Mail\MailServiceProvider', 'Illuminate\Pagination\PaginationServiceProvider', 'Illuminate\Pipeline\PipelineServiceProvider', 'Illuminate\Queue\QueueServiceProvider', 'Illuminate\Redis\RedisServiceProvider', 'Illuminate\Auth\Passwords\PasswordResetServiceProvider', 'Illuminate\Session\SessionServiceProvider', 'Illuminate\Translation\TranslationServiceProvider', 'Illuminate\Validation\ValidationServiceProvider', 'Illuminate\View\ViewServiceProvider', /* * Application Service Providers... */ 'App\Providers\AppServiceProvider', 'App\Providers\AuthServiceProvider', 'App\Providers\EventServiceProvider', 'App\Providers\RouteServiceProvider', // LIBS TIERCE JsLocalization\JsLocalizationServiceProvider::class, 'Laracasts\Flash\FlashServiceProvider', ), /* |-------------------------------------------------------------------------- | Service Provider Manifest |-------------------------------------------------------------------------- | | The service provider manifest is used by Laravel to lazy load service | providers which are not needed for each request, as well to keep a | list of all of the services. Here, you may set its storage spot. | */ 'manifest' => storage_path().'/meta', /* |-------------------------------------------------------------------------- | Class Aliases |-------------------------------------------------------------------------- | | This array of class aliases will be registered when this application | is started. However, feel free to register as many as you wish as | the aliases are "lazy" loaded so they don't hinder performance. | */ 'aliases' => array( 'App' => Illuminate\Support\Facades\App::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, 'Blade' => Illuminate\Support\Facades\Blade::class, 'Cache' => Illuminate\Support\Facades\Cache::class, 'Config' => Illuminate\Support\Facades\Config::class, 'Cookie' => Illuminate\Support\Facades\Cookie::class, 'Crypt' => Illuminate\Support\Facades\Crypt::class, 'DB' => Illuminate\Support\Facades\DB::class, 'Eloquent' => Illuminate\Database\Eloquent\Model::class, 'Event' => Illuminate\Support\Facades\Event::class, 'File' => Illuminate\Support\Facades\File::class, 'Gate' => Illuminate\Support\Facades\Gate::class, 'Hash' => Illuminate\Support\Facades\Hash::class, 'Lang' => Illuminate\Support\Facades\Lang::class, 'Log' => Illuminate\Support\Facades\Log::class, 'Mail' => Illuminate\Support\Facades\Mail::class, 'Password' => Illuminate\Support\Facades\Password::class, 'Queue' => Illuminate\Support\Facades\Queue::class, 'Redirect' => Illuminate\Support\Facades\Redirect::class, 'Redis' => Illuminate\Support\Facades\Redis::class, 'Request' => Illuminate\Support\Facades\Request::class, 'Response' => Illuminate\Support\Facades\Response::class, 'Route' => Illuminate\Support\Facades\Route::class, 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, 'Form' => 'Illuminate\Html\FormFacade', 'HTML' => 'Illuminate\Html\HtmlFacade', // FAÇADES TIERCES 'Flash' => 'Laracasts\Flash\Flash' ),
当然,我清除了 bootstrap/cache中的配置缓存,我尽我所能使其工作,但每次运行时composer update
我都会遇到此错误:
> php artisan clear-compiled [Symfony\Component\Debug\Exception\FatalErrorException] Class 'App\Providers\AuthServiceProvider' not found Script php artisan clear-compiled handling the post-update-cmd event returned with an error [RuntimeException] Error Output:
比这更糟糕的是,我无法运行任何工匠命令或我的应用程序页面.每次我在这个项目中运行一些php时,我都会遇到这个错误!
这是我试过的一些动作:
删除所有缓存,包括config cache和services.json(由于artisan命令中的错误,无法重新生成它们)
删除供应商文件夹并重新运行composer update
'Illuminate\Auth\AuthServiceProvider',
从app.php配置中删除该行
这些都没有奏效,而且我的想法已经不多了.我已阅读并重新阅读官方文档的升级指南,似乎没有任何与此问题相关的内容......
我仍然在为Laravel中的所有psr-4 /命名空间事物而苦苦挣扎,我觉得它可能会导致类似的事情,但无法弄清楚到底是什么......
您是否在/ app/Providers文件夹中具有此服务提供程序App\Providers\AuthServiceProvider
如果不从这里复制它并修复命名空间
https://github.com/laravel/laravel/blob/master/app/Providers/AuthServiceProvider.php