【问题标题】:The "" cache configuration does not exist“”缓存配置不存在
【发布时间】:2022-07-03 20:56:03
【问题描述】:

我正在将一个项目从 CakePHP 3.5 更新到 4.0。 在我的一个模型中,我正在这样做:

    public function afterSave(Event $event, EntityInterface $entity)
    {
        Cache::clear(false, 'dbResults');
    }

这在我的项目的“旧”版本中使用 CakePHP 3.5 有效,但在 CakePHP 4.0 中失败并出现错误

The "" cache configuration does not exist.#0 /var/www/repo/public/vendor/cakephp/cakephp/src/Cache/Cache.php(230): Cake\Cache\Cache::_buildEngine('')

我不明白为什么代码会尝试搜索带有空字符串 "" 的配置。

这是我的app.php 配置文件的相关部分:

    'Cache' => [
        'default' => [
            'className' => 'File',
            'prefix' => 'headless_',
            'path' => CACHE,
            'url' => env('CACHE_DEFAULT_URL', null),
        ],
        '_cake_core_' => [
            'className' => 'File',
            'prefix' => 'headless_cake_core_',
            'path' => CACHE . 'persistent/',
            'serialize' => true,
            'duration' => '+2 minutes',
            'url' => env('CACHE_CAKECORE_URL', null),
        ],
        '_cake_model_' => [
            'className' => 'File',
            'prefix' => 'headless_cake_model_',
            'path' => CACHE . 'models/',
            'serialize' => true,
            'duration' => '+2 minutes',
            'url' => env('CACHE_CAKEMODEL_URL', null),
        ],

        'permissions' => [
            'className' => 'File',
            'prefix' => 'headless_',
            'path' => CACHE . 'permissions/',
            'url' => env('CACHE_PERMISSIONS_URL', null),
        ],

        'dbResults' => [
            'className' => 'File',
            'prefix' => 'headless_',
            'path' => CACHE . 'dbResults/',
            'url' => env('CACHE_PERMISSIONS_URL', null),
            'duration' => '+1440 minutes',
        ],

        'pages' => [
            'className' => 'File',
            'prefix' => 'page_',
            'path' => CACHE . 'pages/',
            'serialize' => true,
            'duration' => '+320 minutes',
        ],

        'page_contents' => [
            'className' => 'File',
            'prefix' => 'pc_',
            'path' => CACHE . 'page_contents/',
            'serialize' => true,
            'duration' => '+320 minutes',
        ],
    ],

除此之外,在我正在做的bootstrap.php 文件中

Cache::setConfig(Configure::consume('Cache'));

我不明白为什么在一切似乎都已正确配置时出现此错误。

【问题讨论】:

  • clear函数只带一个参数,要清除的缓存配置的名称。
  • @GregSchmidt 这就是问题所在,谢谢。 clear 方法的签名从 Cake 3 更改为 Cake 4。如果您将其作为答案发布,我将接受。

标签: php cakephp cakephp-3.0 cakephp-4.x


【解决方案1】:

请更新以下行

Cache::clear('dbResults');

在 CakePHP 4 中,Cache::clear() 与 CakePHP 3 不同,只接受一个参数。他们删除了 $check 参数。不幸的是,迁移指南似乎没有对此进行更新。

参考: https://book.cakephp.org/4/en/core-libraries/caching.html#clearing-cached-data

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 2015-07-30
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2014-12-22
    • 2011-06-11
    相关资源
    最近更新 更多