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 =)
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:
"driver" => "file"
por exemplo"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
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:
"driver" => "file"
por exemplo"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"