每当我尝试清除控制台上的缓存时,我都会收到以下错误:
[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 不确定您要查找哪个文件...
答案 0 :(得分: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');
}
}
}
答案 1 :(得分:3)
通过删除构造函数中的请求对象来解决此问题。由于CLI是无头的,除非手动创建,否则没有“请求”对象。
答案 2 :(得分:0)
尝试运行此rm -rf app/cache/*
...此方法只是linux的删除方式。
答案 3 :(得分:0)
要延长Шатов Максим的答案,我已经创建了对网站根目录的请求,以便资产树枝资产过滤器(cssrewrite)能够解析资产网址:
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');
}
}
}
答案 4 :(得分:0)
我遇到了这个问题,但是我在自己的服务中对请求没有做任何特殊处理 - 似乎错误与Symfony核心内的请求服务本身有关。
我通过执行composer install
解决了这个问题,这个问题没有改变供应商(已经安装)但是确实运行Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
作为副作用,这似乎解决了问题。