Symfony 2 - 尝试调用函数" apcu_fetch"来自命名空间" Doctrine \ Common \ Cache"

时间:2016-08-20 13:54:36

标签: php symfony caching doctrine-orm doctrine

我在我的symfony项目中使用PHP7.0.8和doctrine缓存(使用APCU)。当我从使用此缓存的控制器调用函数时,没有问题,它工作正常!

但是当我创建一个使用使用doctrine缓存的存储库的命令文件时,当我在shell上运行此命令时,我发现了错误:

  

[Symfony的\元器件\调试\异常\ UndefinedFunctionException]
    试图调用函数" apcu_fetch"来自命名空间" Doctrine \ Common \ Cache"。

我的配置:

doctrine:
dbal:
    driver:   pdo_mysql
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    entity_managers:
        default:
            auto_mapping: true
            mappings:
                StofDoctrineExtensionsBundle: ~
            metadata_cache_driver: apcu
            query_cache_driver: apcu
            result_cache_driver: apcu

如果我在控制器中运行它,相同的代码可以工作:( 我认为这是一个错误,任何想法?

2 个答案:

答案 0 :(得分:10)

我通过在我的ubuntu机器上安装AND启用php-apcu修复了同样的问题。

sudo apt-get install -y php-apcu

不要忘记启用模块:

sudo phpenmod apcu

仔细检查php-apcu是否在php配置的命令行版本中加载。尝试在命令行上运行以下命令

php -i | grep apcu

我得到类似的东西作为输出:

/etc/php/7.0/cli/conf.d/20-apcu.ini,
apcu

告诉我apc已加载。

答案 1 :(得分:2)

当你从命令行运行php时,你实际上是在调用php-cli(命令行解释器),而不是php本身。 Php和php-cli不同,它们使用不同的配置文件,并且它们也可以使用不同的扩展。检查你的php-cli扩展名。