我正在部署我的Symfony2应用程序,但是我收到以下错误:
FatalErrorException in classes.php line 0:
Error: Method Symfony\Component\HttpFoundation\Request::__toString() must not throw an exception
Apache更具描述性,说明了Monolog:
PHP Fatal error: Method Symfony\\Component\\HttpFoundation\\Request::__toString() must not throw an exception in /my/path/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php on line 0
这也是我唯一不清楚这是怎么回事。我本地机器上的开发环境运行正常。
我试图清除prod缓存,composer缓存和重新启动的apache服务。我还做了一个新的"作曲家安装"清除缓存后。
任何人都知道如何解决这个问题?我正在运行Symfony v2.7.4。
答案 0 :(得分:0)
例如,您应该检查$ _COOKIE或$ _SESSION; 问题是您可以在$ _COOKIE中使用数组值,因此在您的调试环境中,您可能会遇到以下情况:
Debug::enable() //see, i don't exclude E_NOTICE here
$request = Request::createFromGlobals();
echo $request->__toString();
//so, from now you've got your Exception because of
//Debug package converts E_NOTICE to Fatal
//which turns into Exception
因此,如果你想解决这个问题,你需要:
Debug::enable(~E_NOTICE);
或者,如果可能,只需从代码中删除(string)$request
;
请参阅Request code:
//part of __toString() method
foreach ($this->cookies as $k => $v) {
$cookies[] = $k.'='.$v;
}