Hola
Al ejecutar el comando: cache:clear --env=prod --no-debug
ME da este mensaje.
PHP Fatal error: Call to undefined function Doctrine\Common\Cache\apc_fetch() in C:\xampp\htdocs\mds\vendor\doctrine\common\lib\Doctrine\Common\Cache\ApcCache.php on line 42 Done.
Me podrian orientar
Gracias.
Respuestas
Te recomiendo revisar tu archivo config_prod.yml y compares lo siguiente:
Debería tener comentareado estas líneas:
#framework: # validation: # cache: validator.mapping.cache.apc # serializer: # cache: serializer.mapping.cache.apc #doctrine: # orm: # metadata_cache_driver: apc # result_cache_driver: apc # query_cache_driver: apc
Sobreescribe esos comentarios con la configuración:
framework: validation: cache: apc doctrine: orm: metadata_cache_driver: apc result_cache_driver: apc query_cache_driver: apc
Comenta luego si te sirvió o no, Saludos.
@RoberRielo
@RoberRielo
Me siguie saliendo ese error.
Podria ser algo de la configuracion php/apache.
Tuve que cambiar el equipo, por tanto en mi caso realice la instalación y configuración del servidor local a mano en el nuevo equipo.
Aplicación funcionaba correctamente en el antiguo equipo.
@dariongg
Tienes problemas con Apc, el error t da en la linea en que PHP intenta recuperar informacion. Te aconsejo que borres la cache a mano y fijarte que el servidor tenga APC activo. Voy a aprovechar para mostrar una solucion muy simple que implementé sobre el problema de APC, lo que pasa es que symfony, en especial doctrine, no valida que esté activo APC antes de usarla, yo siempre pongo el siguiente código en el archivo config_prod.yml :
- { resource: config_apc.php }
lo que hago es importar un archivo de configuracion en PHP para poder ponerle un condicional. o sea me quedaría así
imports: - { resource: config.yml } - { resource: config_apc.php } #framework: # validation: # cache: validator.mapping.cache.apc # serializer: # cache: serializer.mapping.cache.apc #doctrine: # orm: # metadata_cache_driver: apc # result_cache_driver: apc # query_cache_driver: apc monolog: handlers: main: type: fingers_crossed action_level: error handler: nested nested: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug console: type: console
luego en el archivo config_apc.php que estoy importando pongo:
<?php if(extension_loaded('apc') && ini_get('apc.enabled') && function_exists('apc_store')){ return array ( 'doctrine' => array ( 'orm' => array ( 'metadata_cache_driver' => 'apc', 'result_cache_driver' => 'apc', 'query_cache_driver' => 'apc', ), ), 'framework' => array ( 'validation' => array ( 'cache' => 'validator.mapping.cache.apc' ), 'serializer' => array ( 'cache' => 'serializer.mapping.cache.apc' ), ), ); }else{ return array ( 'doctrine' => array ( 'orm' => array ( 'metadata_cache_driver' => 'array', 'result_cache_driver' => 'array', 'query_cache_driver' => 'array', ), ), ); }
es simple pregunto si APC está activo lo uso. Esto es para doctrine, si se quiere usar la misma estrategia para que symfony lo use en la carga de clase pongo el controlador frontal app.php de la manera siguiente:
use Symfony\Component\HttpFoundation\Request; /** * @var Composer\Autoload\ClassLoader */ $loader = require __DIR__.'/app/autoload.php'; include_once __DIR__.'/app/bootstrap.php.cache'; // Enable APC for autoloading to improve performance. // You should change the ApcClassLoader first argument to a unique prefix // in order to prevent cache key conflicts with other applications // also using APC. if(extension_loaded('apc') && ini_get('apc.enabled') && function_exists('apc_store')){ $apcLoader = new Symfony\Component\ClassLoader\ApcClassLoader(sha1(__FILE__), $loader); $loader->unregister(); $apcLoader->register(true); } $kernel = new AppKernel('prod', false); $kernel->loadClassCache(); //ESI $kernel = new AppCache($kernel); // When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter Request::enableHttpMethodParameterOverride(); $request = Request::createFromGlobals(); $response = $kernel->handle($request); $response->send(); $kernel->terminate($request, $response);
y esto es todo, simple y t puedes olvidar del lio de la cache, NOTA: El código es de un sistema en el que uso symfony 2.8 Saludos.
@jdvellon