带有ParameterBag类的DebugClassLoader.php中的ContextErrorException

时间:2017-03-16 11:37:10

标签: php symfony

我正在使用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修复它,但稍后再次显示

4 个答案:

答案 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服务器。

To quote

<块引用>

目前,PHP 支持三个版本,即版本 5.6、7.0、7.1 和 7.2。作为使用不同框架的现代 Web 开发人员,软件包需要在您的 VPS 上安装多个版本的 PHP。

在您的开发过程中,并非您的所有项目都支持最新版本 (V. 7.2),从而导致您降级到更早的版本。在本教程中,我们将说明如何在 PHP 7.2 到 7.0 的不同版本之间切换,让您的项目顺利运行。