Symfony2:将APC更改为xcache

时间:2013-01-25 09:33:10

标签: php symfony symfony-2.1 apc xcache

因为APC中的Bug,我不得不使用另一个Cache-Drive。我删除了APC并安装了xcache。 config.php说你的配置看起来很适合运行Symfony

我在请求时收到以下错误:

PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Unable to use ApcClassLoader as APC is not enabled.' in /var/.../app/bootstrap.php.cache:1039
Stack trace:
#0 /var/.../web/app.php(11): Symfony\\Component\\ClassLoader\\ApcClassLoader->__construct('sf2', Object(Composer\\Autoload\\ClassLoader))
#1 {main}
thrown in /var/...app/bootstrap.php.cache on line 1039

如何告诉Symfony使用xcache而不是APC?

3 个答案:

答案 0 :(得分:3)

有同样的问题,这就是我做到的:

第12行替换

$loader = new ApcClassLoader('sf2', $loader);

$loader = new XcacheClassLoader('sf2', $loader);

(并定义正确的使用陈述)

答案 1 :(得分:0)

替换$loader = new ApcClassLoader('tcs_beta_prod', $loader);$loader = new XcacheClassLoader('tcs_beta_prod', $loader);并添加use Symfony\Component\ClassLoader\XcacheClassLoader;我有这个错误Fatal error: Class 'Symfony\Component\ClassLoader\XcacheClassLoader' not found in C:\xampp\htdocs\edt\web\app.php on line 11。 这是我的app.php

<?php

use Symfony\Component\ClassLoader\XcacheClassLoader;
use Symfony\Component\HttpFoundation\Request;

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

// Use APC for autoloading to improve performance
// Change 'sf2' by the prefix you want in order to prevent key conflict with another application

$loader = new XcacheClassLoader('tcs_beta_prod', $loader);
$loader->register(true);


require_once __DIR__.'/../app/AppKernel.php';
require_once __DIR__.'/../app/AppCache.php';

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel = new AppCache($kernel);
$request = Request::createFromGlobals();
Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR'))); // per suggestion from Farid / Patrick to deal with ELB proxying
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

答案 2 :(得分:0)

您没有为XCache定义use语句:

use Symfony\Component\ClassLoader\XcacheClassLoader;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\ClassLoader\XcacheClassLoader;