我在我的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
如果我在控制器中运行它,相同的代码可以工作:( 我认为这是一个错误,任何想法?
答案 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扩展名。