Ошибка обновления Laravel с 5.1 до 5.2

Когда я пытаюсь обновить существующий проект от Laravel 5.1 до Laravel 5.2, используя официальное руководство, я получаю сообщение об ошибке после обновления компоновщика, когда обновление сообщения

php artisan clear-compiled

Выполняется

. Вот ошибка.

Класс Illuminate\Foundation\Composer не существует

У кого-то была аналогичная проблема? Когда я запускаю обновление для компилятора с флагом без скриптов, он регулярно обновляется, поэтому проблема с явным компилированием.

Ниже приведены мои поставщики услуг и мой файл composer.json.

Поставщики услуг

    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,
    Vetruvet\PhpRedis\PhpRedisServiceProvider::class,
    Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
    Illuminate\Session\SessionServiceProvider::class,
    Illuminate\Translation\TranslationServiceProvider::class,
    Illuminate\Validation\ValidationServiceProvider::class,
    Illuminate\View\ViewServiceProvider::class,
    Collective\Html\HtmlServiceProvider::class,
    Laravel\Socialite\SocialiteServiceProvider::class,
    Intervention\Image\ImageServiceProvider::class,
    Torann\GeoIP\GeoIPServiceProvider::class,
    Jenssegers\Agent\AgentServiceProvider::class,
    Barryvdh\Debugbar\ServiceProvider::class,

composer.json

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "fzaninotto/faker": "^[email protected]",
    "laravelcollective/html": "5.2.*",
    "laravelcollective/remote": "~5.2",
    "kriswallsmith/assetic": "^[email protected]",
    "pda/pheanstalk": "^[email protected]",
    "aws/aws-sdk-php-laravel": "~3.0",
    "illuminate/http": "~5.2",
    "illuminate/session": "~5.2",
    "illuminate/support": "~5.2",
    "nesbot/carbon": "~1.18",
    "guzzlehttp/guzzle": "~5.3|~6.0",
    "vetruvet/laravel-phpredis": "dev-master",
    "predis/predis": "^[email protected]",
    "laravel/socialite": "^[email protected]",
    "intervention/image": "^[email protected]",
    "brightcove/api": "^[email protected]",
    "torann/geoip": "dev-master",
    "graham-campbell/throttle": "~5.1",
    "jenssegers/agent": "^[email protected]"
},
"require-dev": {
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~4.0",
    "phpspec/phpspec": "~2.1",
    "symfony/dom-crawler": "~3.0",
    "symfony/css-selector": "~3.0",
    "barryvdh/laravel-debugbar": "^[email protected]",
    "laracasts/generators": "dev-master"
},
"repositories": [
    {
        "type": "git",
        "url": "https://github.com/nardev/laravel-vzaar.git"
    }
],
"autoload": {
    "classmap": [
        "database",
        "app/Models",
        "app/Footgoll"
    ],
    "files": [
        "app/helpers.php"
    ],
    "psr-4": {
        "Myapp\\": "app/"
    }
},
"autoload-dev": {
    "classmap": [
        "tests/TestCase.php"
    ]
},
"scripts": {
    "post-install-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ],
    "post-update-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ],
    "post-root-package-install": [
        "php -r \"copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ]
},
"config": {
    "preferred-install": "dist"
},
"minimum-stability": "dev",
"prefer-stable": true
}

Когда я запустил

grep -nH -d recurse 'Composer' bootstrap/app/config/

Это то, что возвращается:

самозагрузки/autoload.php: 7: | Зарегистрироваться Автозагрузчик Composer самонастройки /autoload.php: 10: | Composer обеспечивает удобный, автоматически созданный загрузчик классов самонастройки /autoload.php: 42: | при работе на местном уровне. Однако нам нужно будет загрузить в Composer

Вот как выглядит файл autoload.php:

    <?php

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Register The Composer Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/

require __DIR__.'/../vendor/autoload.php';

/*
|--------------------------------------------------------------------------
| Include The Compiled Class File
|--------------------------------------------------------------------------
|
| To dramatically increase your application performance, you may use a
| compiled class file which contains all of the classes commonly used
| by a request. The Artisan "optimize" is used to create this file.
|
*/

$compiledPath = __DIR__.'/cache/compiled.php';

if (file_exists($compiledPath)) {
    require $compiledPath;
}

/*
|--------------------------------------------------------------------------
| Register The Workbench Loaders
|--------------------------------------------------------------------------
|
| The Laravel workbench provides a convenient place to develop packages
| when working locally. However we will need to load in the Composer
| auto-load files for the packages so that these can be used here.
|
*/
if (is_dir($workbench = __DIR__.'/../workbench'))
{
    Xtwoend\Workbench\Starter::start($workbench);
}

Может ли это быть что-то о верстаке?

Обновление: действительно ужасное исправление возврата Composer.php от 5.1 к поставщику /laravel/framework/src/Illuminate/Foundation позволяет функции приложения нормально, но мне действительно нужно лучшее решение, которое можно направить на производство.

Ответы

Ответ 1

Welp, я только что создал новое приложение laravel с 5.2 и снова добавил весь код и зависимости, кажется, работает сейчас.

Ответ 2

Ошибка, которую вы получаете, касается всех используемых вами пакетов. Поскольку местоположение класса Composer изменено, оно не может быть найдено.

Из примечаний к обновлению:

Класс Illuminate\Foundation\Support\Composer был перемещен в Illuminate\Support\Composer.

Подождите, пока запросы на получение запроса будут приняты, например, пакет laracasts/generators, который включен в ваш файл composer.json, является одним из пакетов, которые еще не совместимы с Laravel 5.2

https://github.com/laracasts/Laravel-5-Generators-Extended/issues/81

Таким образом, одним из наиболее часто используемых пакетов, в которых произошла эта ошибка, является cviebrock/eloquent-sluggable.

https://github.com/cviebrock/eloquent-sluggable/issues/214.

Нет ничего, что можно, но дождаться, когда запросы на тягу будут приняты или просто отредактируют файлы поставщиков, которые не подходят для этого.

Ответ 3

Попробуйте

php artisan optimize --force

Если ошибка продолжается, удалите vendor/compiled.php, а затем запустите команду выше Это воссоздает класс vendor/compiled.php.

Команда выше удаляет два файла

Файл bootstrap/compiled.php. Этот файл создается, когда вы оптимизировать классы. Файл app/storage/meta/services.json. Этот файл создается, поскольку Laravel пытается оптимизировать загрузку услуги провайдеров, использующих ваше приложение.

Источник

когда я бежал с явным компилятором, он удалил vendor/compiled.php в моем проекте.

Так как у вас нет скомпилированного класса, вы не можете его удалить. Должно быть, поэтому у вас проблемы. Не пытайтесь очистить скомпилированные классы.

Я также обновляю огромное приложение с 4.2 до 5.0. проблемы проблемы..:)

Ответ 5

Возможно, это SocialiteServiceProvider, возможно, и другие.

У меня была эта проблема вчера вечером при обновлении, многие сервис-провайдеры должны обновить свой код до 5.2.

AdamWathan\EloquentOAuthL5\Установка, кажется, использует класс Composer напрямую, удалите этого поставщика услуг и вы можете продолжить обновление.

Ответ 6

Попробуйте следующее:

composer update --no-scripts

Это позволило мне увидеть подробное объяснение причин composer update. Для меня я обновлялся до laravel 5.2, но забыл также обновить "laravelcollective/html": "5.1.*" до "laravelcollective/html": "5.2.*".

Найдено здесь fooobar.com/info/385226/...