ZF3 zend-cache错误无法将服务“ FilesystemCache”解析为工厂

时间:2018-08-22 14:37:48

标签: zend-framework3 zend-cache

我正在尝试将zend-cache与zend-rbac一起使用。

zend-rbac还可以,但是当我尝试添加zend-cache时,我收到了以下消息:

  

无法将服务“ FilesystemCache”解析为工厂;您确定是在配置过程中提供的吗?

我在global.php上的缓存配置如下:

// Cache configuration.
'caches' => [
    'FilesystemCache' => [
        'adapter' => [
            'name'    => Filesystem::class,
            'options' => [
                // Store cached data in this directory.
                'cache_dir' => './data/cache',
                // Store cached data for 1 hour.
                'ttl' => 60*60*1
            ],
        ],
        'plugins' => [
            [
                'name' => 'serializer',
                'options' => [                        
                ],
            ],
        ],
    ],
],

在我的RbacManagerFactory中,我这样称呼它:

$cache = $container->get('FilesystemCache');

我已经尝试在我的模块中配置FilesystemService,就像这样:

'service_manager' => [
    'factories' => [
        \Zend\Cache\Storage\Adapter\FilesystemService::class => InvokableFactory::class,
    ],
],

但这没用

我需要配置更多东西吗?

编辑2018-10-29

当我尝试运行sample时,出现此错误:

  

[2018年10月29日星期一12:06:13.097747] [php7:warn] [pid 943] [客户端127.0.0.1:48824] PHP警告:file_put_contents(data / cache / module-config-cache.application.config。 cache.php):无法打开流:第65行的/var/www/html/roledemo/vendor/zendframework/zend-modulemanager/src/Listener/AbstractListener.php中没有此类文件或目录   [2018年10月29日星期一12:06:13.098593] [php7:warn] [pid 943] [客户端127.0.0.1:48824] PHP警告:file_put_contents(data / cache / module-classmap-cache.application.module.cache.php ):无法打开流:在第65行的/var/www/html/roledemo/vendor/zendframework/zend-modulemanager/src/Listener/AbstractListener.php中没有此类文件或目录   [2018年10月29日星期一12:06:13.112886] [php7:error] [pid 943] [客户端127.0.0.1:48824] PHP致命错误:方法Zend \ View \ Helper \ HeadTitle :: __ toString()不得引发异常,捕获到Zend \ I18n \ Exception \ ExtensionNotLoadedException:Zend \ I18n \ Translator组件需要/var/www/html/roledemo/module/Application/view/layout/layout.phtml第0行上的国际PHP扩展

我无法访问任何URL。

可以是我的php或apache版本吗?

1 个答案:

答案 0 :(得分:0)

所以我错过了一些东西,这就是为什么它以前不起作用的原因:

  • 创建数据/缓存文件夹并授予其权限775
  • 创建public / img / captcha文件夹并授予其权限775
  • 将模块Zend \ Serializer和Zend \ Cache添加到config / modules.config.php
  • 添加

    'rbac_manager'=> [     '断言'=> [Service \ RbacAssertionManager :: class], ]

    到module / Login / config / module.config.php

  • 并且,如果您遵循文本,请不要下载代码: 在src / Service / RbacManager.php第72行中将$ result设置为false