У меня снова проблема с APCu и PHP7.
Вот мой конф.
framework:
validation:
cache: validator.mapping.cache.doctrine.apc
serializer:
cache: serializer.mapping.cache.apc
doctrine:
orm:
metadata_cache_driver: apcu
result_cache_driver: apcu
query_cache_driver: apcu
Сайт работает нормально, но когда я отправляю форму, я всегда получаю эту ошибку:
[2016-06-29 09:17:12] request.CRITICAL: необработанное исключение PHP
Symfony \ Component \ Debug \ Exception \ UndefinedFunctionException:
«Попытка вызова функции» apc_fetch «из пространства имен
«Доктрина \ Общее \ Кэш». «В
ROUTE_TO_PROJECT / продавец / Доктрина / кэш / Библиотека / Doctrine / Общие / Cache / ApcCache.php
строка 41 {«исключение»: «[объект] (Symfony \ Component \ Debug \ Exception \ UndefinedFunctionException (код:
0): Попытка вызвать функцию \ «apc_fetch \» из пространства имен
\ «Доктрина \ Common \ Cache \». в
ROUTE_TO_PROJECT / продавец / Доктрина / кэш / Библиотека / Doctrine / Общие / Cache / ApcCache.php: 41) «}
[]
вот мой композитор:
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.0.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^2.8",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"knplabs/knp-paginator-bundle": "^2.5",
"liip/imagine-bundle": "^1.5",
"jms/serializer-bundle": "^1.1",
"symfony/assetic-bundle": "^2.8",
"gopay/payments-sdk-php": "^1.1",
"knplabs/knp-snappy-bundle": "~1.4",
"friendsofsymfony/user-bundle": "~2.0@dev"
Почему Symfony вызывает apc_fetch вместо apcu_fatch?
В предыдущих версиях APCu
, APC
модуль и функции были предоставлены как часть библиотеки.
В самых последних (PHP 7) версиях APCu
, обратно совместимый APC
это отдельное расширение.
Это мое решение:
services.yml
serializer.mapping.cache.apcu:
class: Doctrine\Common\Cache\ApcuCache
confing_prod.yml
serializer:
cache: serializer.mapping.cache.apcu
ИДК, если это решение в порядке, но похоже, что оно работает. Так что, если вы знаете лучшее решение, я хотел бы использовать его.
Вы можете заставить apcu работать с проверкой Symfony, используя оболочку кеша доктрины.
config.yml
validation:
cache: validator.mapping.cache
services.yml
doctrine.apcu.cache:
class: Doctrine\Common\Cache\ApcuCache
validator.mapping.cache:
class: Symfony\Component\Validator\Mapping\Cache\DoctrineCache
arguments: ['@doctrine.apcu.cache']