2016-06-29 3 views
3

У меня проблема с APCu и PHP7 снова. Вот мой конфиг.Symfony 3/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: Uncaught PHP Exception Symfony\Component\Debug\Exception\UndefinedFunctionException: "Attempted to call function "apc_fetch" from namespace "Doctrine\Common\Cache"." at ROUTE_TO_PROJECT/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php line 41 {"exception":"[object] (Symfony\Component\Debug\Exception\UndefinedFunctionException(code: 0): Attempted to call function \"apc_fetch\" from namespace \"Doctrine\Common\Cache\". at ROUTE_TO_PROJECT/vendor/doctrine/cache/lib/Doctrine/Common/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": "[email protected]" 

Почему Symfony вызов apc_fetch вместо apcu_fatch ?

ответ

4

Это мое решение:

services.yml

serializer.mapping.cache.apcu: 
    class: Doctrine\Common\Cache\ApcuCache 

confing_prod.yml

serializer: 
    cache: serializer.mapping.cache.apcu 

ИДК, если это решение в порядке, но похоже, что это работает. Поэтому, если вы знаете лучшее решение, я бы хотел его использовать.

4

В предыдущих версиях APCu модуль и функции APC были предоставлены как часть библиотеки.

В последних (PHP 7) версиях APCu обратная совместимость APC является separate extension.

1

Вы можете получить apcu работать с проверкой симфони с помощью оболочки кэша доктрины

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']