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

gra*_*lle 8 php caching doctrine symfony doctrine-orm

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

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

[Symfony\Component\Debug\Exception\UndefinedFunctionException]
尝试从命名空间"Doctrine\Common\Cache"调用函数"apcu_fetch".

我的配置:

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
Run Code Online (Sandbox Code Playgroud)

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

小智 11

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

sudo apt-get install -y php-apcu
Run Code Online (Sandbox Code Playgroud)

不要忘记启用该模块:

sudo phpenmod apcu
Run Code Online (Sandbox Code Playgroud)

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

php -i | grep apcu
Run Code Online (Sandbox Code Playgroud)

我有类似的输出:

/etc/php/7.0/cli/conf.d/20-apcu.ini,
apcu
Run Code Online (Sandbox Code Playgroud)

这告诉我apc已加载.