Php Symfony缓存验证错误:使用setPublic()后无法声明类响应
我在和你玩 在我的控制器中,我有:Php Symfony缓存验证错误:使用setPublic()后无法声明类响应,php,symfony,http-caching,Php,Symfony,Http Caching,我在和你玩 在我的控制器中,我有: // ... get the $data and $myObject somehow ... $response = $this->json($data); $response->setEtag($myObject->getDateModified()->format("Y-m-d H:i:s")); // getDateModified() returns a DateTime $response->setPublic();
// ... get the $data and $myObject somehow ...
$response = $this->json($data);
$response->setEtag($myObject->getDateModified()->format("Y-m-d H:i:s")); // getDateModified() returns a DateTime
$response->setPublic();
return $response;
删除缓存后第一次加载页面时,控制器运行,一切正常。但从第二次开始,我刚刚得到:
classes.php第3353行中的FatalErrorException:错误:无法声明
类Symfony\Component\HttpFoundation\Response,因为名称为
已在使用
只要我使用$response->setPublic(),这个问题就会出现代码>
是什么导致了问题?我做错什么了吗?我发现了这个,也许它能帮到你
他们建议删除行$kernel->loadClassCache()代码>来自app.php
这是一种加速尝试,它可以预加载中所需的类
大多数请求。然而,这在PHP7.0中已经过时,在PHP中则处于边缘状态
5.6-因此,将其移除是可行的
编辑:我删除了行$kernel->loadClassCache()代码>并且没有更多错误,http缓存工作正常
另外,这里还有额外的信息:我有一个类似的问题。我想不出是什么导致了这个错误。我的错误是无法在/…var/cache/prod/classes.php
中重新声明类Symfony\Component\HttpFoundation\ResponseHeaderBag。当我注释掉$kernel=newappcache($kernel)时,问题就消失了
在app.php
内部,但这不是一个解决方案:/n不是,但你让我感觉不那么孤独:)谢谢你的回答,但不幸的是,它没有解决问题。相反,它将错误更改为:RequestDataCollector.php第128行中的ContextErrorException:注意:未定义的偏移量:0
您有什么Symfony版本?PHP7.0上的Symfony 3.2.0在版本3.2.0的第128行。在RequestDataCollector中,$value=array_映射(函数($v){return isset($v[1])?$v:$v[0];},$value)代码>但是,null头值存在问题,因此在3.2.1版中它是固定的-$value=array_-map(函数($v){return isset($v[0])&&!isset($v[1])?$v[0]:$v;},$value)代码>这个答案肯定会被@ShinDarth接受。它解决了你的问题。你还有另一个问题。