Php Symfony ExceptionHandler引发自身错误

Php Symfony ExceptionHandler引发自身错误,php,symfony,exception,php-7,Php,Symfony,Exception,Php 7,我正在升级一个应用程序,使用symfony3和php7。我一直在犯这个错误。我不知道它是从哪里来的,也不知道如何修复它 Symfony\Component\Debug\ExceptionHandler::handle()必须是异常的实例 TL;DR:代码中的某个地方触发了PHP错误。在PHP5中,它是作为一个简单的PHP错误触发的;在PHP7中,它作为错误抛出,现在传递到Symfony的异常处理程序中 此错误可能一直存在于应用程序中,并由于错误报告或显示错误设置而被忽略 PHP7中的错误处理机

我正在升级一个应用程序,使用symfony3和php7。我一直在犯这个错误。我不知道它是从哪里来的,也不知道如何修复它

Symfony\Component\Debug\ExceptionHandler::handle()必须是异常的实例


TL;DR:代码中的某个地方触发了PHP错误。在PHP5中,它是作为一个简单的PHP错误触发的;在PHP7中,它作为
错误抛出,现在传递到Symfony的异常处理程序中

此错误可能一直存在于应用程序中,并由于
错误报告
显示错误
设置而被忽略


PHP7中的错误处理机制已更改。错误现在作为
Error
类的实例抛出,并且可以被异常处理程序捕获。有关更多信息,请参阅:

PHP7改变了PHP报告大多数错误的方式。现在大多数错误都是通过抛出错误异常来报告的,而不是通过PHP5使用的传统错误报告机制来报告错误

与正常异常一样,这些
Error
异常将冒泡出现,直到到达第一个匹配的catch块。如果没有匹配的块,则将调用使用
set\u exception\u handler()
安装的任何默认异常处理程序,如果没有默认异常处理程序,则该异常将转换为致命错误,并将像传统错误一样处理

但是,请注意,
Error
类并没有扩展
Exception
类(尽管它们都实现了
可丢弃的
接口)

由于Symfony异常处理程序是使用该方法注册为异常处理程序的,因此该处理程序将在代码中抛出各种未捕获的
Error
实例时被调用,但无法按照其类型提示预期的
异常来处理它们


目前,您可以通过实现自己的ExceptionHandler(您可以使用它代替Symfony)来解决这个问题,它实现了
句柄(Throwable$error)
函数,允许您捕获PHP错误。

您需要提供堆栈跟踪,或者导致此错误的代码可以获得任何帮助。堆栈跟踪:#0[内部函数]:Symfony\Component\Debug\ExceptionHandler->handle(Object(Error))#1{main}抛出/Applications/MAMP/htdocs/upgrade/vendor/Symfony/Symfony/Symfony/Symfony/Component/Debug/ExceptionHandler.php行67,但我无法扩展ExceptionHandler,因为类中的所有内容都是“私有的”:/…Symfony 3.4是否有不同的解决方案?