我正在使用symfony 3和 angular 5 开发应用程序。我的系统是Windows 10,我使用的是php7.2
一切都是以dev_mode完成的,但是当我打开生产模式时,我遇到了这个错误:
致命错误:未捕获 Symfony的\分量\调试\异常\ UndefinedFunctionException: 尝试从命名空间调用函数“apcu_fetch” “教义\共同\缓存”。
我如何安装apcu?
答案 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