Framework: [5.0][5.1] Problema de caché después de la actualización desde 4.2

Creado en 5 ene. 2016  ·  3Comentarios  ·  Fuente: laravel/framework

Hola !
Tengo un proyecto ejecutando laravel 4.2 desde hace más de un año.
Esta semana comencé el proceso de actualización para usar 5.0, luego 5.1 y, en última instancia, apunto a 5.2.

La actualización 5.0 salió bien, todo funcionó perfectamente excepto este problema de almacenamiento en caché.
Primero pensé "Actualicemos a 5.1 y veamos si funciona", pero no fue así.

Uso un comando artesanal que genera caché y obtengo esta excepción:

Refreshing the message cache...

  [InvalidArgumentException]
  Cache store [] is not defined.

Primero pensé que era un problema de instalación. Reinstalé todo desde cero siguiendo la guía oficial de documentación de laravel. Verifiqué dos veces cada configuración, etc. Pero sigo teniendo este problema.

Hay información que puede ayudar a reproducir / ayudarme:

contenido de 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_ archivo de configuración:

<?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',

);

Para demostrar el problema, probé un caso de uso de caché simple en mi página de inicio:

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

Y aquí está la pila de llamadas que obtengo en el navegador (corte donde pasa en mi archivo):

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()

¿Alguien ya se enfrentó a este tipo de error o tiene alguna idea de qué probar?
Puedo dar detalles más específicos si necesita preguntar =)

Comentario más útil

Está bien, soy bastante estúpido, supongo. Solo publicando la solución si alguien alguna vez cae en esta "trampa" como lo hice yo:

  • En Laravel 4.2 , la clave de configuración para el controlador de caché predeterminado es "driver" => "file" por ejemplo
  • En Laravel 5.x , esta clave se llama "default" => "file"

Mientras migraba, extraje el contenido de la configuración, clave por clave para buscar una nueva clave/configuración, pero me perdí este detalle. así que tenía "driver" => "file" en mi 5.1 en lugar de "default" => "file"

Todos 3 comentarios

Por favor, pregunte en los foros.

Está bien, soy bastante estúpido, supongo. Solo publicando la solución si alguien alguna vez cae en esta "trampa" como lo hice yo:

  • En Laravel 4.2 , la clave de configuración para el controlador de caché predeterminado es "driver" => "file" por ejemplo
  • En Laravel 5.x , esta clave se llama "default" => "file"

Mientras migraba, extraje el contenido de la configuración, clave por clave para buscar una nueva clave/configuración, pero me perdí este detalle. así que tenía "driver" => "file" en mi 5.1 en lugar de "default" => "file"

Incluso después de 3 años, verifique dos veces el archivo .env para asegurarse de que se proporcionaron los argumentos correctos

¿Fue útil esta página
0 / 5 - 0 calificaciones