Привет !
У меня есть проект, на котором работает laravel 4.2 уже более года.
На этой неделе я начал процесс обновления, чтобы использовать 5.0, затем 5.1, и в конечном итоге я стремлюсь к 5.2.
Обновление 5.0 прошло нормально, все работало отлично, кроме этой проблемы с кэшированием.
Сначала я подумал: «Давайте обновимся до 5.1 и посмотрим, работает ли это», но этого не произошло.
Я использую ремесленную команду, которая генерирует кеш и получает это исключение:
Refreshing the message cache...
[InvalidArgumentException]
Cache store [] is not defined.
Сначала я подумал, что проблема в установке. Я переустановил все с нуля, следуя официальному руководству по документации laravel. я дважды проверял каждую конфигурацию и т. д. Но у меня все еще есть эта проблема.
Есть информация, которая может помочь воспроизвести / помочь мне:
Содержимое 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_:
<?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',
);
Чтобы продемонстрировать проблему, я попробовал простой вариант использования кеша на своей домашней странице:
public function index()
{
Cache::put('toto', 'titi', 1);
$value = Cache::get('toto');
return View::make('pages.accueil');
}
А вот стек вызовов, который я получаю в браузере (вырезал там, где он проходит в моем файле):
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()
Кто-нибудь уже сталкивался с такой ошибкой или знает, что попробовать?
Я могу дать более подробную информацию, если вам нужно, просто спросите =)
Спрашивайте на форумах.
Ладно, наверное, я совсем тупой. Просто публикую решение, если кто-то когда-нибудь попадется в эту «ловушку», как я:
"driver" => "file"
"default" => "file"
Во время миграции я стер содержимое конфигурации, ключ за ключом, чтобы проверить наличие нового ключа / конфигурации, но пропустил эту деталь. поэтому у меня в 5.1 было "driver" => "file"
вместо "default" => "file"
Даже через 3 года дважды проверьте файл .env, чтобы убедиться, что предоставлены правильные аргументы.
Самый полезный комментарий
Ладно, наверное, я совсем тупой. Просто публикую решение, если кто-то когда-нибудь попадется в эту «ловушку», как я:
"driver" => "file"
"default" => "file"
Во время миграции я стер содержимое конфигурации, ключ за ключом, чтобы проверить наличие нового ключа / конфигурации, но пропустил эту деталь. поэтому у меня в 5.1 было
"driver" => "file"
вместо"default" => "file"