2015-12-25 14 views
14

Wenn ich versuche, unser bestehendes Projekt von Laravel 5,1 bis Laravel 5.2 mit dem offiziellen Guide zu aktualisieren, erhalte ich einen Fehler nach Komponisten Update, wenn die Post-UpdateLaravel 5.1 bis 5.2 Upgrade-Fehler

php Handwerker klar kompilierte

wird ausgeführt. Hier ist der Fehler.

Klasse Illuminate \ Foundation \ Composer existiert nicht

Hat jemand ein ähnliches Problem gehabt? Wenn ich das Composer-Update mit dem Flag no scripts ausfühle, wird es regelmäßig aktualisiert, so dass es ein Problem mit dem clear-compiled ist.

Unten sind meine Service Provider und meine composer.json Datei.

Dienstleister

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 
} 

Als ich

laufen

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

Rückgabe:

bootstrap/autoload.php: 7: | Registrieren Sie den Composer Auto Loader bootstrap/autoload.php: 10: | Composer bietet einen praktischen, automatisch generierten Klassenlader bootstrap/autoload.php: 42: | wenn lokal gearbeitet wird. Allerdings müssen wir in dem Komponisten

Dies ist, wie die autoload.php Datei aussieht laden:

<?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's 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); 
} 

Könnte es etwas über die Werkbank sein?

Update: eine wirklich schreckliche Lösung der Rückkehr der Composer.php von 5.1 nach Vendor/Laravel/Framework/src/Illuminate/Foundation lässt die App normal funktionieren, aber ich brauche wirklich eine bessere Lösung, die auf die Produktion geschoben werden kann .

+0

ich das gleiche Problem habe und auch nach einer Lösung suchen. – murze

+1

Nein, das Autoload ist nicht relevant. Das sind nur Kommentare. Der Grep sagt, dass es keinen Bezug zur Klasse "Composer" gibt. Ich glaube wirklich, dass das Entfernen der 'compiled.php'-Datei es reparierte und Sie müssen nur Composer erneut ausführen. – andrewtweber

+1

Für zukünftige Leser können Sie [das Upgrade von Laravel 5.1 auf Laravel 5.2 automatisieren] (https://laravelshift.com/upgrade -Laravel-5.1-zu-Laravel-5.2). –

Antwort

0

Welp, ich habe gerade eine neue Laravel App mit 5.2 erstellt und den gesamten Code und die Abhängigkeiten wieder eingefügt, scheint jetzt zu funktionieren.

1

php artisan optimize --force 

Versuchen Wenn Fehler Verkäufer/compiled.php weiter löschen und dann den Befehl über laufen Verkäufer/compiled.php Klasse Diese neu erstellen.

Befehl oben löscht zwei Dateien

Der Bootstrap/compiled.php Datei. Diese Datei wird erstellt, wenn Sie Klassen optimieren. Die Datei app/storage/meta/services.json. Diese Datei wird erstellt, während Laravel versucht, das Laden des Dienstanbieters , den Ihre Anwendung verwendet, zu optimieren.

Source

, wenn ich lief klar kompiliert es mit dem Verkäufer/compiled.php in meinem Projekt gelöscht.

Da Sie keine kompilierte Klasse haben, können Sie sie nicht löschen. Dies muss der Grund sein, warum Sie Probleme haben. Kompromittieren Sie Klassen nicht ..

Ich aktualisiere auch eine große App von 4.2 auf 5.0. Probleme Probleme .. :)

+0

Ich habe gerade versucht, es zu starten. Meine handwerklichen Befehle sind eigentlich nicht verfügbar, der gleiche Fehler taucht auf, wenn ich php artisan whatever laufe. – Deveram

+0

@Deveram Bitte überprüfen Sie meine Antwort erneut – Oguzhan

+0

Es gibt keine compiled.php in meinem Lieferantenverzeichnis überhaupt. – Deveram

1

Es ist wahrscheinlich das SocialiteServiceProvider, vielleicht auch andere.

Ich hatte dieses Problem letzte Nacht beim Upgrade, viele Service Provider müssen ihren Code auf 5.2 aktualisieren.

AdamWathan \ EloquentOAuthL5 \ Die Installation scheint die Composer-Klasse direkt zu verwenden, diesen Dienstanbieter zu entfernen und das Upgrade fortzusetzen.

3

Der Fehler, den Sie bekommen, ist alles über die Pakete, die Sie verwenden. Da der Speicherort der Composer-Klasse geändert wurde, konnte sie nicht gefunden werden.

Von den Upgrade-Hinweise:

Die Illuminate\Foundation\Support\Composer Klasse Illuminate\Support\Composer verschoben wurde.

Warten Sie auf die Pull-Anforderungen akzeptiert werden, zum Beispiel des laracasts/generators-Paket, das in Ihrer composer.json Datei enthalten ist, eines des Pakets ist, dass mit Laravel 5,2

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

noch nicht kompatibel ist

Eines der am häufigsten verwendeten Pakete, bei denen dieser Fehler aufgetreten ist, ist cviebrock/eloquent-sluggable.

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

Es gibt nichts, was Sie können, aber warten Sie, bis die Pull-Requests akzeptiert werden oder bearbeiten Sie einfach die Vendor-Dateien, was nicht die coole Option ist.

+0

FWIW, mein Sluggable-Paket sollte ab Version 3.1.4 jetzt 5.2-freundlich sein. – Colin

1

Try this:

composer update --no-scripts

Das hat mir erlaubt eine detaillierte Erklärung, warum composer update gescheitert. Für mich habe ich auf Laravel 5.2 aktualisiert, aber vergessen, auch "laravelcollective/html": "5.1.*" zu "laravelcollective/html": "5.2.*" zu aktualisieren.

hier gefunden https://stackoverflow.com/a/36515184/922522