Symfony2:__ toString()不能抛出异常

apf*_*pfz 5 symfony monolog

我正在部署我的Symfony2应用程序,但是我收到以下错误:

FatalErrorException in classes.php line 0:
Error: Method Symfony\Component\HttpFoundation\Request::__toString() must not throw an exception
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这也是我唯一不清楚这是如何发生的事情.我本地机器上的开发环境运行正常.

我试图清除prod缓存,composer缓存和重新启动的apache服务.清除缓存后,我还做了一个新的"作曲家安装".

任何人都知道如何解决这个问题?我正在运行Symfony v2.7.4.

ale*_*lue 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 
Run Code Online (Sandbox Code Playgroud)

因此,如果你想解决这个问题,你需要:

  1. 找到异常触发的真正原因(通知、已弃用、严格消息等)
  2. 将其从调试中排除:Debug::enable(~E_NOTICE);

或者如果可能的话,从您的代码中删除(string)$request

请参阅请求代码

//part of __toString() method
foreach ($this->cookies as $k => $v) {
    $cookies[] = $k.'='.$v;
}
Run Code Online (Sandbox Code Playgroud)