尝试从命名空间“Doctrine \ Common \ Cache”调用函数“apcu_fetch”

时间:2018-04-30 09:01:05

标签: angular symfony angular5 apc php-7.2

我正在使用symfony 3和 angular 5 开发应用程序。我的系统是Windows 10,我使用的是php7.2

一切都是以dev_mode完成的,但是当我打开生产模式时,我遇到了这个错误:

  

致命错误:未捕获   Symfony的\分量\调试\异常\ UndefinedFunctionException:   尝试从命名空间调用函数“apcu_fetch”   “教义\共同\缓存”。

我如何安装apcu?

1 个答案:

答案 0 :(得分:1)

对于PHP 7.x,似乎Symfony已经删除了默认config_prod.yml中的框架(验证和序列化程序)缓存配置并保留了ORM缓存,但使用apc而不是apcu就像他们以前一样。我在PHP 7.1.12上运行的项目中看到了同样的问题,我在此更改之前就已经开始了。

我确实设法通过安装和修改Symfony prod配置来运行APCU,但我倾向于像Symfony那样做。如果您正在考虑仍在使用APCU和序列化&验证器缓存:

如果没有安装,请将其安装在服务器上(这会因服务器而异,但还有其他文章解释这一点):

pecl install apcu && echo "extension=apcu.so" > /usr/local/etc/php/conf.d/apcu.ini

然后在services.yml中添加以下内容以配置验证程序缓存:

services:
    doctrine.cache.apcu:
        class: Doctrine\Common\Cache\ApcuCache

    validator.mapping.cache.doctrine.apcu:
        class: Symfony\Component\Validator\Mapping\Cache\DoctrineCache
        arguments: ['@doctrine.cache.apcu']

然后在config_prod.yml

中使用它
framework:
    validation:
        cache: validator.mapping.cache.doctrine.apcu
    serializer:
        cache: doctrine.cache.apcu

doctrine:
    orm:
        metadata_cache_driver: apcu
        query_cache_driver: apcu
        result_cache_driver: apcu