我正在使用Symfony 2并使用wamp服务器。过了一段时间,我再也无法访问我的页面了,总是显示异常,无法解释原因。 这是完整的堆栈跟踪:
in DebugClassLoader.php line 203
at DebugClassLoader->loadClass('Symfony\\Component\\HttpFoundation\\ParameterBag')
at spl_autoload_call('Symfony\\Component\\HttpFoundation\\ParameterBag') in Request.php line 240
at Request->initialize(array(), array(), array(), array(), array(), array([...]), null) in Request.php line 222
at Request->__construct(array(), array(), array(), array(), array(), array([...]), null) in Request.php line 1964
at Request::createRequestFromFactory(array(), array(), array(), array(), array(), array([...])) in Request.php line 281
at Request::createFromGlobals() in app_dev.php line 27
似乎" DebugClassLoader" class使用反射来分析错误,并在访问ParameterBag类时抛出异常。 var_dump()显示ParameterBag正在按预期实现\ IteratorAggregate和\ Countable,但也有一些随机类" o"我无法确定它来自哪里。
Prod环境将是一个在debian上运行的apache服务器,也许它可以在它上面工作,但我可以在上线之前更好地解决这个问题。
我可以处理ParameterBag的所有代码都是这样的:
$session = $request->getSession();
$session_id = $session->getId();
$webclient = $em->getRepository('AppBundle\Entity\WebClient')
->findOneBy(array("session_id" => $session_id));
...
另请注意,清除缓存无法解决此问题。 (使用php bin / console cache:clear [--env = dev])
PS:重新启动apache修复它,但稍后再次显示
答案 0 :(得分:1)
我遇到了这个问题(不是在ParameterBag上,而是在同一个文件中有相同的异常),这是由于APC安装损坏造成的。尝试将此行放在php.ini中:
apc.cache_by_default = 0
在[APC]
区块中。如果错误消失,请考虑删除并重新安装APC。
答案 1 :(得分:0)
APC未启用。我试图找到是否安装了任何其他缓存以禁用它们,但没有。它仍然出现在我的开发环境中。
然而,在我的生产环境中似乎没有发生。我可能会使用它。
答案 2 :(得分:0)
如果您在调试时尝试清除服务器缓存。您将面临一些错误:
致命错误:在C:\ xampp \ htdocs \ project_name \ vendor \ symfony \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Command \ CacheClearCommand.php中,允许的内存大小为268435456个字节(尝试分配2444952个字节)第163行
所以要解决这个问题,你需要在php.ini中添加以下行并重新启动apache。
apc.cache_by_default = 0
现在看到了魔力。它会正常工作。
感谢,
Anirudh Sood。
答案 3 :(得分:0)
更新PHP版本并重启apache服务器。
<块引用>目前,PHP 支持三个版本,即版本 5.6、7.0、7.1 和 7.2。作为使用不同框架的现代 Web 开发人员,软件包需要在您的 VPS 上安装多个版本的 PHP。
在您的开发过程中,并非您的所有项目都支持最新版本 (V. 7.2),从而导致您降级到更早的版本。在本教程中,我们将说明如何在 PHP 7.2 到 7.0 的不同版本之间切换,让您的项目顺利运行。