Framework: [5.0][5.1] Cache-Problem nach Upgrade von 4.2

Erstellt am 5. Jan. 2016  ·  3Kommentare  ·  Quelle: laravel/framework

Hallo !
Ich habe ein Projekt, auf dem Laravel 4.2 seit mehr als einem Jahr läuft.
Diese Woche habe ich mit dem Upgrade-Prozess begonnen, um 5.0, dann 5.1 zu verwenden und letztendlich strebe ich 5.2 an.

Das 5.0-Upgrade lief gut, alles funktionierte perfekt, außer diesem Caching-Problem.
Zuerst dachte ich "Lass uns auf 5.1 aktualisieren und sehen, ob es funktioniert", aber das tat es nicht.

Ich verwende einen handwerklichen Befehl, der Cache generiert und diese Ausnahme erhalte:

Refreshing the message cache...

  [InvalidArgumentException]
  Cache store [] is not defined.

Zuerst dachte ich, es sei ein Installationsproblem. Ich habe alles von Grund auf neu installiert, indem ich der offiziellen Dokumentation von Laravel gefolgt bin. Ich habe jede Konfiguration doppelt überprüft usw. Aber ich habe immer noch dieses Problem.

Es gibt Informationen, die beim Reproduzieren / Helfen helfen können:

Inhalt von composer.json :

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "laravel/framework": "5.1.*",
        "illuminate/html": "5.*",
        "andywer/js-localization": "dev-laravel-5",
        "laracasts/flash" : "~1.0"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    },
    "autoload": {
        "classmap": [
            "database",
            "app/Models",
            "app/Http/Controllers"
        ],
        "psr-4": {
            "App\\": "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-create-project-cmd": [
            "php -r \"copy('.env.example', '.env');\"",
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

_cache.php_ Konfigurationsdatei:

<?php

return array(

    /*
    |--------------------------------------------------------------------------
    | Default Cache Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default cache "driver" that will be used when
    | using the Caching library. Of course, you may use other drivers any
    | time you wish. This is the default when another is not specified.
    |
    | Supported: "file", "database", "apc", "memcached", "redis", "array"
    |
    */

    'driver' => 'file',

    /*
    |--------------------------------------------------------------------------
    | Cache Stores
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the cache "stores" for your application as
    | well as their drivers. You may even define multiple stores for the
    | same cache driver to group types of items stored in your caches.
    |
    */
    'stores' => [
        'apc' => [
            'driver' => 'apc',
        ],
        'array' => [
            'driver' => 'array',
        ],
        'database' => [
            'driver' => 'database',
            'table'  => 'cache',
            'connection' => 'mysql',
        ],
        'file' => [
            'driver' => 'file',
            'path'   => storage_path('framework/cache'),
        ],
        'memcached' => [
            'driver'  => 'memcached',
            'servers' => [
                [
                    'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100,
                ],
            ],
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],
    ],
    /*
    |--------------------------------------------------------------------------
    | Cache Key Prefix
    |--------------------------------------------------------------------------
    |
    | When utilizing a RAM based store such as APC or Memcached, there might
    | be other applications utilizing the same cache. So, we'll specify a
    | value to get prefixed to all our keys so we can avoid collisions.
    |
    */
    'prefix' => 'laravel',

);

Um das Problem zu demonstrieren, habe ich einen einfachen Cache-Anwendungsfall auf meiner Homepage ausprobiert:

        public function index()
    {
        Cache::put('toto', 'titi', 1);
        $value = Cache::get('toto');
        return View::make('pages.accueil');
    }

Und hier ist der Call-Stack, den ich im Browser bekomme (an der Stelle schneiden, an der er in meiner Datei übergeben wird):

Whoops, looks like something went wrong.

1/1
InvalidArgumentException in CacheManager.php line 93:
Cache store [] is not defined.
in CacheManager.php line 93
at CacheManager->resolve(null) in CacheManager.php line 77
at CacheManager->get(null) in CacheManager.php line 55
at CacheManager->store() in CacheManager.php line 318
at CacheManager->__call('put', array('toto', 'titi', '1')) in Facade.php line 222
at CacheManager->put('toto', 'titi', '1') in Facade.php line 222
at Facade::__callStatic('put', array('toto', 'titi', '1')) in AccueilController.php line 13
at Cache::put('toto', 'titi', '1') in AccueilController.php line 13
at AccueilController->index()

Hatte jemand schon mal einen solchen Fehler oder hat eine Idee, was man versuchen könnte?
Ich kann genauere Details geben, wenn Sie brauchen, fragen Sie einfach =)

Hilfreichster Kommentar

Okay, ich bin ziemlich dumm, denke ich. Ich poste nur die Lösung, falls jemals jemand wie ich in diese "Falle" tappen sollte:

  • In Laravel 4.2 lautet der Konfigurationsschlüssel für den Standard-Cache-Treiber beispielsweise "driver" => "file"
  • In Laravel 5.x heißt dieser Schlüssel "default" => "file"

Während der Migration habe ich den Konfigurationsinhalt Schlüssel für Schlüssel gelöscht, um nach neuen Schlüsseln/Konfigurationen zu suchen, aber dieses Detail vermisse ich. also hatte ich "driver" => "file" in meinem 5.1 statt "default" => "file"

Alle 3 Kommentare

Bitte fragen Sie in den Foren nach.

Okay, ich bin ziemlich dumm, denke ich. Ich poste nur die Lösung, falls jemals jemand wie ich in diese "Falle" tappen sollte:

  • In Laravel 4.2 lautet der Konfigurationsschlüssel für den Standard-Cache-Treiber beispielsweise "driver" => "file"
  • In Laravel 5.x heißt dieser Schlüssel "default" => "file"

Während der Migration habe ich den Konfigurationsinhalt Schlüssel für Schlüssel gelöscht, um nach neuen Schlüsseln/Konfigurationen zu suchen, aber dieses Detail vermisse ich. also hatte ich "driver" => "file" in meinem 5.1 statt "default" => "file"

Überprüfen Sie auch nach 3 Jahren noch einmal die .env-Datei, um sicherzustellen, dass die richtigen Argumente bereitgestellt wurden

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen