20

每当我尝试清除控制台上的缓存时,都会出现以下错误:

 [Symfony\Component\DependencyInjection\Exception\InactiveScopeException]   
  You cannot create a service ("request") of an inactive scope ("request").

有谁之前经历过这个吗?谢谢。

编辑:代码示例:

//accessing request object
namespace Greg\TestBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerInterface;
use HvH\APIschemaBundle\Controller\Validation;
use HvH\APIschemaBundle\Controller\Helpers;

//FOSRestBundle
use FOS\RestBundle\View\View;

class TestController extends Controller
{
    public function testAction(Request $request) 
    {                       
        //get any query strings
        $query_strings = $request->query->all();
        return($query_strings);
    }
}

XML 不确定您要查找的文件...

4

5 回答 5

44

例如,要在 CLI 中手动创建范围“请求”,您可以重载AppKernel类中的initializeContainer内核方法,只需执行以下操作:

class AppKernel extends Kernel {
    public function registerBundles() {
        // ...
    }

    public function registerContainerConfiguration(LoaderInterface $loader) {
        // ...
    }

    protected function initializeContainer() {
        parent::initializeContainer();
        if (PHP_SAPI == 'cli') {
            $this->getContainer()->enterScope('request');
            $this->getContainer()->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request');
        }
    }
}
于 2013-03-03T04:08:54.633 回答
3

通过删除构造函数中的请求对象修复了这个问题。由于 CLI 是无头的,因此没有“请求”对象,除非它是手动创建的。

于 2012-07-17T22:09:26.283 回答
0

试试运行这个rm -rf app/cache/*……这个方法只是linux的删除方式。

于 2012-07-10T14:21:22.850 回答
0

为了扩展Шатов Максим的回答,我创建了一个对站点根目录的请求,以便资产树枝资产过滤器(css​​rewrite)能够解析资产网址:

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        // ...
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        // ...
    }

    protected function initializeContainer()
    {
        parent::initializeContainer();
        if (PHP_SAPI == 'cli') {
            $request = new Request();
            $request->create('/');
            $this->getContainer()->enterScope('request');
            $this->getContainer()->set('request', $request, 'request');
        }
    }
}
于 2014-11-13T20:32:22.360 回答
0

我遇到了这个问题,但我没有对自己的服务中的请求做任何特别的事情——看起来这个错误与 Symfony 核心中的请求服务本身有关。

我解决了这个问题,它composer install没有改变供应商(已经安装)但确实Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap作为副作用运行,这似乎解决了问题。

于 2017-11-08T11:43:55.130 回答