Framework: [5.0][5.1] Problema de cache após a atualização do 4.2

Criado em 5 jan. 2016  ·  3Comentários  ·  Fonte: laravel/framework

Oi !
Eu tenho um projeto rodando laravel 4.2 há mais de um ano.
Esta semana iniciei o processo de atualização para usar o 5.0, depois o 5.1 e, finalmente, estou mirando no 5.2.

A atualização 5.0 correu bem, tudo funcionou perfeitamente, exceto esse problema de cache.
Primeiro eu pensei "Vamos atualizar para 5.1 e ver se funciona", mas não funcionou.

Eu uso um comando artesão que gera cache e recebo esta exceção:

Refreshing the message cache...

  [InvalidArgumentException]
  Cache store [] is not defined.

Primeiro eu pensei que era um problema de instalação. Reinstalei tudo do zero seguindo o guia oficial do laravel. eu verifiquei novamente todas as configurações etc... Mas ainda estou tendo esse problema.

Há informações que podem ajudar a reproduzir/ajudar-me:

conteúdo 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_ arquivo de configuração:

<?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 demonstrar o problema, tentei um caso de uso de cache simples na minha página inicial:

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

E aqui está a pilha de chamadas que recebo no navegador (corte onde passa no meu arquivo):

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

Alguém já enfrentou esse tipo de bug ou tem alguma idéia do que tentar?
Posso dar detalhes mais específicos se precisar é só perguntar =)

Comentários muito úteis

Ok, eu sou muito estúpido, eu acho. Apenas postando a solução se alguém cair nessa "armadilha" como eu fiz:

  • No Laravel 4.2 , a chave de configuração para o driver de cache padrão é "driver" => "file" por exemplo
  • No Laravel 5.x , essa chave é chamada "default" => "file"

Durante a migração, eu mudei o conteúdo da configuração, chave por chave, para verificar a nova chave / configuração, mas perdi esse detalhe. então eu tinha "driver" => "file" no meu 5.1 em vez de "default" => "file"

Todos 3 comentários

Por favor, pergunte nos fóruns.

Ok, eu sou muito estúpido, eu acho. Apenas postando a solução se alguém cair nessa "armadilha" como eu fiz:

  • No Laravel 4.2 , a chave de configuração para o driver de cache padrão é "driver" => "file" por exemplo
  • No Laravel 5.x , essa chave é chamada "default" => "file"

Durante a migração, eu mudei o conteúdo da configuração, chave por chave, para verificar a nova chave / configuração, mas perdi esse detalhe. então eu tinha "driver" => "file" no meu 5.1 em vez de "default" => "file"

Mesmo após 3 anos, verifique novamente o arquivo .env para garantir que os argumentos corretos foram fornecidos

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

SachinAgarwal1337 picture SachinAgarwal1337  ·  3Comentários

RachelScodes picture RachelScodes  ·  3Comentários

gabriellimo picture gabriellimo  ·  3Comentários

iivanov2 picture iivanov2  ·  3Comentários

shopblocks picture shopblocks  ·  3Comentários