Symfony 2 - 试图调用函数“apcu_fetch"来自命名空间“DoctrineCommonCache"

2022-01-16 00:00:00 caching php symfony doctrine doctrine-orm

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

I'm using PHP7.0.8 and the doctrine cache (with APCU) in my symfony project. When I call function from my controllers which use this cache, no problems, It works fine !

但是当我创建一个使用存储库的命令文件时,当我在我的 shell 上运行这个命令时,我遇到了错误:

But when I create a command file which use a repository which use the doctrine cache, and when I run this command on my shell, I've the error :

[SymfonyComponentDebugExceptionUndefinedFunctionException]
试图从命名空间DoctrineCommonCache"调用函数apcu_fetch".

[SymfonyComponentDebugExceptionUndefinedFunctionException]
Attempted to call function "apcu_fetch" from namespace "DoctrineCommonCache".

我的配置:

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

如果我在控制器中运行相同的代码 :(我认为这是一个错误,知道吗?

The same code works if I run it in a controller :( I think it's a bug, any idea ?

推荐答案

我通过在我的 ubuntu 机器上安装并启用 php-apcu 解决了同样的问题.

I fixed the very same problem by installing AND enabling php-apcu on my ubuntu machine.

sudo apt-get install -y php-apcu

别忘了启用模块:

sudo phpenmod apcu

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

Double check that php-apcu is loaded in the command line version of your php config. Try to run the following on the command line

php -i | grep apcu

我得到了类似的输出:

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

这表明 apcu 已加载.

which shows me that apcu is loaded.

相关文章