Я использую PHP7.0.8 и кеш доктрины (с APCU) в моем проекте symfony. Когда я вызываю функцию от моих контроллеров, которые используют этот кеш, никаких проблем, он работает отлично!
Но когда я создаю командный файл, который использует репозиторий, который использует кеш доктрины, и когда я запускаю эту команду в своей оболочке, у меня есть ошибка:
[Symfony \ Component \ Debug \ Exception \ 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
Тот же код работает, если я запускаю его в контроллере 🙁 Я думаю, что это ошибка, любая идея?
Я исправил ту же проблему, установив И включив php-apcu на моем компьютере ubuntu.
sudo apt-get install -y php-apcu
НЕ забывайте включить модуль:
sudo phpenmod apcu
Дважды проверьте, что php-apcu загружается в версию командной строки вашего php config. Попробуйте запустить в командной строке следующее:
php -i | grep apcu
У меня получилось что-то вроде вывода:
/etc/php/7.0/cli/conf.d/20-apcu.ini, apcu
который показывает мне, что apcu загружен.
Когда вы запускаете php из командной строки, вы на самом деле вызываете php-cli (интерпретатор командной строки), а не php. Php и php-cli разные, они используют другой файл конфигурации, а также могут использовать разные расширения. Проверьте расширения php-cli.